我有一个包含start_date
和end_date
的字符串,由/
分隔,如下所示
2017-01-30T12:00-0300/2017-03-30T00:00-0300
这里T表示时间。
我想检查这个日期是否超过今天的日期,做点什么。
我尝试了什么 -
sale_price_effective_date = current_row['sale_price_effective_date'].split("/")
start_date = sale_price_effective_date[0]
end_date = sale_price_effective_date[1]
print start_date
print end_date
此处sale_price_effective_date
是包含start_date和end_date的字符串。
我想做 -
if (end_date-start_date)>datetime.now():
//do something
请帮忙。期待您的建议。
答案 0 :(得分:4)
这个怎么样:
In [1]: from dateutil import parser
In [2]: s = "2017-01-30T12:00-0300/2017-03-30T00:00-0300"
In [3]: start, end = s.split("/")
In [4]: start_date = parser.parse(start)
In [5]: start_date
Out[5]: datetime.datetime(2017, 1, 30, 12, 0, tzinfo=tzoffset(None, -10800))
In [6]: end_date = parser.parse(end)
In [7]: start_date > end_date
Out[7]: False
编辑:
要检查今天的日期是否在开始和结束之间,您可以执行以下操作:
In [19]: from datetime import datetime
In [20]: start_date < datetime.now(tz=start_date.tzinfo) < end_date
Out[20]: False
如MYGz所示。
答案 1 :(得分:2)
你可以这样做:
import dateutil
from datetime import datetime
a = "2017-01-30T12:00-0300/2017-03-30T00:00-0300"
a = map(dateutil.parser.parse, a.split('/'))
if datetime.now(tz=a[1].tzinfo) < a[1]:
print "Todays date is less than end date"
else:
print "Todays date is greater than end date"
如果今天的日期时间可能小于或等于结束日期时间,那么请将其他等号加=
进行比较,如下所示:
datetime.now(tz=a[1].tzinfo) <= a[1]