【问题标题】:Python can't subtract offset-naive and offset-aware datetimesPython 不能减去 offset-naive 和 offset-aware 日期时间
【发布时间】:2015-08-17 09:20:22
【问题描述】:

我有以下功能:

epoch = datetime(1970, 1, 1)

def epoch_seconds(date):
    """Returns the number of seconds from the epoch to date."""
    print(epoch)
    td = date - epoch
    return td.days * 86400 + td.seconds + (float(td.microseconds) / 1000000)

当我直接从我的模型中获取日期时,我收到以下错误:

打印(epoch_seconds(self.modified))

不能减去 offset-naive 和 offset-aware 日期时间

所以我检查了self.modifiedepoch的格式

self.modified = 2015-08-13 16:29:37.601681+00:00
epoch = 1970-01-01 00:00:00

我想我理解错误并且需要这些格式相同但是我不知道.601681+00:00 是什么以及如何执行此操作。能否帮助解释. 之后的内容以及如何使它们匹配?

【问题讨论】:

    标签: python


    【解决方案1】:

    点之后是时区信息,对于这种情况,我认为您不需要。继续以这种方式摆脱该时区信息:

    date = date.replace(tzinfo=None)
    

    【讨论】:

      【解决方案2】:

      如果您有一个 datetime 对象,您可以直接从中获取纪元的秒数​​:

      d = datetime.datetime(2015,1,1)
      print int(d.strftime("%s"))
      

      在您的问题中,.601681 是时间上的额外分辨率,以微秒为单位, +00:00 是以小时为单位的偏移量:与 UTC(以前为 GMT)的分钟数。

      【讨论】:

      • 此解决方案在 python 3 中不起作用。在 Python 3.3+ 中,您可以使用 timestamp() 代替:
      猜你喜欢
      • 2021-03-23
      • 2018-02-27
      • 2012-05-26
      • 2017-09-16
      • 2017-03-26
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多