【问题标题】:How to compare only day, month, and year using timestamp?如何使用时间戳仅比较日、月和年?
【发布时间】:2021-01-03 16:08:46
【问题描述】:

我们如何比较两个日期,如果它们具有相同的日期而不考虑时间戳?

例如:

date1 = 1508651293229
date2 = 1508651293220

date1 = datetime.fromtimestamp(int(date1) / 1e3)
date2 = datetime.fromtimestamp(int(date2) / 1e3)

if(date1 == date2):
  print(True)

但这会检查包括时间在内的全天戳,我只想检查日、月和年。

我尝试了一些文档,但找不到太多相关性。

【问题讨论】:

    标签: python python-3.x datetime python-datetime python-dateutil


    【解决方案1】:

    datetime.datetime 实例有一个date 方法,该方法返回一个datetime.date 对象,忽略原始值的时间。

    if date1.date() == date2.date():
    

    如果您不关心时间,也可以直接创建datetime.date 实例,因为datetime.date.fromtimestamp 也存在。

    date1 = datetime.date.fromtimestamp(date1 // 1000)
    

    【讨论】:

    • 它可以工作,但它会检查日期和时间,但我只想要它的日、月和年部分
    • 那么您在问题中错误地陈述了您的意图:“我只想检查日、月和年。”
    • 我的错,已更正。任何想法如何避免时间部分
    • 这样。 date 方法返回的 date 对象不包含时间。 datetime.datetime.fromtimestamp(date1//1000).date()datetime.date.fromtimestamp(date1//1000) 都返回 datetime.date(2017, 10, 22)
    • 如果你真的只关心一天,每个datetime.date实例都有一个day属性,例如datetime.date.fromtimestamp(date1//1000).day == 22
    【解决方案2】:

    试试:

    if date1.date() == date2.date():
        print('True')
    
    # and indeed, they are:
    True
    

    【讨论】:

    • 它可以工作,但它会检查日期和时间,但我只想要它的一天部分
    • 不,它不检查时间。 .date() 仅返回 datetime 的日期(年、月、日)部分。
    【解决方案3】:

    datetime.date() 返回具有相同年月日的日期对象

    在你的情况下,你应该使用:

    if(date1.date() == date2.date()):
      print(True)
    

    你也可以通过简单地缩短它

    print(date1.date() == date2.date())
    

    【讨论】:

    • 它可以工作,但它会检查日期和时间,但我只想要它的一天部分。
    • 你能解释一下“一天的部分”是什么意思吗? date1.date()date2.date() 都等于 2017-10-22。如果您只想要月份中的某一天(忽略月份和年份),您可以使用date1.day,即22
    • 我建议查看datetime documentation。它可能会解决您的问题。
    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2012-10-10
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多