我正在将一个参数传递给一个脚本,该脚本以下列格式提供日期 -
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查询。
答案 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)
请注意argparse
有type
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)