【问题标题】:Comparing datetime objects by date only仅按日期比较日期时间对象
【发布时间】:2014-04-25 12:50:46
【问题描述】:

我有两个 datetime 对象具有相同的日期、月份和年份,例如:

test_date = datetime.datetime(2014, 4, 25, 11, 57, 56)

(上面的日期是像datetime.utcfromtimestamp(utc_timestamp)一样创建的)和

now_date  = datetime.datetime(2014, 4, 25, 12, 40, 19, 705355)

(上面的日期创建为datetime.now())。当我说

now_date==test_date

当它应该是True 时,我得到了False。如何正确比较?

【问题讨论】:

    标签: python date python-2.7 datetime


    【解决方案1】:

    由于您只想比较日期而不是时间,因此您需要将这些转换为 datetime.date 对象,从而去除与时间相关的信息。

    In [1]: import datetime
    
    In [2]: test_date = datetime.datetime(2014, 4, 25, 11, 57, 56)
    
    In [3]: now_date = datetime.datetime(2014, 4, 25, 12, 40, 19, 705355)
    
    In [4]: now_date == test_date
    Out[4]: False
    
    In [5]: test_date = test_date.date()
    
    In [6]: test_date
    Out[6]: datetime.date(2014, 4, 25)
    
    In [7]: now_date = now_date.date()
    
    In [8]: now_date
    Out[8]: datetime.date(2014, 4, 25)
    
    In [9]: now_date == test_date
    Out[9]: True
    

    【讨论】:

      【解决方案2】:

      您当前正在比较整个datetime 对象,包括时间(不匹配)。相反,只需比较 date 部分:

      >>> now_date.date() == test_date.date()
      True
      

      【讨论】:

        【解决方案3】:

        如果你只是想比较日月年,你可以试试:

        now_date.strftime('%Y%m%d')==test_date.strftime('%Y%m%d')
        

        使用此方法,您还可以指定其他属性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-21
          • 2015-07-20
          • 2014-02-12
          • 1970-01-01
          • 2023-03-29
          相关资源
          最近更新 更多