【问题标题】:Python validate String containing start_date and end_date for today's datePython 验证包含今天日期的 start_date 和 end_date 的字符串
【发布时间】:2017-06-07 14:48:01
【问题描述】:

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

请帮忙。期待您的建议。

【问题讨论】:

  • 您不应该只将end_date 与今天的日期进行比较吗? (end_date-start_date) 会给您带来差异,将时间增量对象与日期时间对象进行比较是没有意义的。
  • 我的意思是 start_date 和 end_date 应该在今天的日期之间。
  • 介于两者之间?你的意思是?您的意思是今天的日期应该介于开始日期和结束日期之间吗?
  • 是的,今天的日期应该在开始日期和结束日期之间吗?
  • 是的,那么您只需进行 1 次比较。检查更新的答案。这就是我最初的预测。我不是吗? !-)

标签: python date if-statement time conditional


【解决方案1】:

你可以这样做:

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]

【讨论】:

    【解决方案2】:

    这个怎么样:

    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所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 2015-11-24
      • 1970-01-01
      • 2021-08-26
      • 2014-08-14
      相关资源
      最近更新 更多