【问题标题】:How do I get seconds since 1/1/1970 of a Python datetime object?如何获得自 1970 年 1 月 1 日以来 Python 日期时间对象的秒数?
【发布时间】:2019-09-03 14:25:18
【问题描述】:

我正在使用 Python 3.7 和 Django。我想获取日期时间对象自 1970 年 1 月 1 日以来的秒数(或毫秒)。按照这里的建议——In Python, how do you convert a `datetime` object to seconds?,我实现了

now = datetime.now()
...
return [len(removed_elts) == 0, score, now.total_seconds()]

但是“now.total_seconds()”行给出了错误

AttributeError: 'datetime.datetime' object has no attribute 'total_seconds'

获取自 1970 年 1 月 1 日以来的秒数的正确方法是什么?

【问题讨论】:

  • 我认为你只是有一个问题,因为你没有减去 datetime 对象来得到一个 timedelta 对象(它确实有一个属性 total_seconds)。我相信您链接的问题上的this answer 可以满足您的需求。但您也可以使用datetime.timestamp,如下所述。

标签: python python-3.x datetime seconds


【解决方案1】:

这应该可行。

import datetime
first_date = datetime.datetime(1970, 01, 01)
time_since = datetime.datetime.now() - first_date
seconds = int(time_since.total_seconds())

【讨论】:

  • “time_since”和“first_date”是不同的对象类型吗?
  • 它们是 bot datetime 对象。 @戴夫
【解决方案2】:
import time
print(time.time())

输出:

1567532027.192546

【讨论】:

    【解决方案3】:

    与您提到的建议相反,您不会在timedelta 对象上调用total_seconds(),而是在datetime 对象上调用datetime,它根本没有此属性。

    因此,Python 3.7(和 2.7)的一种解决方案可以是:

    import datetime
    
    now = datetime.now()
    then = datetime.datetime(1970,1,1)
    ...
    return [len(removed_elts) == 0, score, (now - then).total_seconds()]
    

    Python 3.3+ 的另一个更短但不太清晰(至少乍一看)的解决方案(此解决方案归功于 ababak):

    import datetime
    
    now = datetime.now()
    ...
    return [len(removed_elts) == 0, score, now.timestamp()]
    

    【讨论】:

      【解决方案4】:
      now = datetime.now()
      ...
      return [len(removed_elts) == 0, score, now.timestamp()]
      

      【讨论】:

        【解决方案5】:

        你可以试试:

        import datetime
        
        now = datetime.datetime.now()
        delta = (now - datetime.datetime(1970,1,1))
        print(delta.total_seconds())
        

        now 的类型为 datetime.datetime,并且没有 .total_seconds() 方法。

        deltadatetime.timedelta 类型,并且有一个 .total_seconds() 方法。

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 2012-01-19
          • 1970-01-01
          • 2011-08-06
          • 2012-07-06
          • 2012-02-19
          • 2012-10-07
          • 2010-12-29
          • 1970-01-01
          • 2014-04-28
          相关资源
          最近更新 更多