添加和减去日期

时间:2014-12-16 01:02:21

标签: python

我正在将一个参数传递给一个脚本,该脚本以下列格式提供日期 -

yyyy-mm-dd

如何将该值转换为减去或添加一天?

摘录 -

script.py 2014-12-15

parser = argparse.ArgumentParser()
parser.add_argument("date", help="date to check dependencies")
args = parser.parse_args()

date = args.date
date1 = date - 1
date2 = date + 1

我需要这个,因为我将调用一个将使用这两个值进行搜索的SQL查询。

2 个答案:

答案 0 :(得分:5)

您可以使用datetime.datetime.strptime解析字符串'2014-12-15'

In [184]: import datetime as DT
In [185]: DT.datetime.strptime('2014-12-15', '%Y-%m-%d')
Out[185]: datetime.datetime(2014, 12, 15, 0, 0)

请注意argparsetype keyword parameter,允许您将参数字符串转换为所需的类型:

parser.add_argument(
    "date"
    , type=lambda x: DT.datetime.strptime(x, '%Y-%m-%d')
    , help="date to check dependencies")

如果用户提供有效日期,args.date将为datetime.datetime

然后,您可以添加或减去datetime.timedelta以查找所需的日期:

In [186]: DT.datetime(2014, 12, 15, 0, 0) + DT.timedelta(days=1)
Out[186]: datetime.datetime(2014, 12, 16, 0, 0)

import argparse
import datetime as DT

parser = argparse.ArgumentParser()
parser.add_argument(
    "date"
    , type=lambda x: DT.datetime.strptime(x, '%Y-%m-%d')
    , help="date to check dependencies")
args = parser.parse_args()

date = args.date
one_day = DT.timedelta(days=1)
date1 = date - one_day
date2 = date + one_day
print(date1)
print(date2)

答案 1 :(得分:0)

那时

date是一个字符串,你需要的是一种转换为Date的方法。您可以使用Dateutil:

执行此操作
import datetime
import dateutil.parser

dt = dateutil.parser.parse(date)

接下来,您可以添加和减去天数:

dt2 = dt+timedelta(days=1)

并写出:

str(dt2)
相关问题