Python验证包含今天日期的start_date和end_date的String

时间:2017-01-23 06:34:42

标签: python date if-statement time conditional

我有一个包含start_dateend_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

请帮忙。期待您的建议。

2 个答案:

答案 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]