【问题标题】:datetime , time python日期时间,时间python
【发布时间】:2012-02-04 11:50:23
【问题描述】:

我想将日期字符串转换为 UTC 日期。另外需要将此日期与UTC中的当前时间进行比较,并在python中获得以毫秒为单位的差异。

我看了蟒蛇 时间增量 资讯 时间 日期 日期时间

但是所有这些似乎都令人困惑,在不使用像 pytz 这样的时区库(但只使用标准 python 库)的情况下解决我的问题的最佳方法是什么

有没有办法以毫秒为单位转换和比较日期(整数格式日期)?

【问题讨论】:

  • 你应该使用 pytz。这很令人困惑,因为处理时区令人困惑。
  • 你真的应该包括一个你需要转换的日期字符串的例子。

标签: python date time gmt


【解决方案1】:

如果您创建 datetime 实例并且不提供时区(tzinfo 对象),则生成的 datetime 实例是“时区不可知论”。它不关心时区。

所以,如果您的所有日期都在同一个时区,只需不指定时区,就可以了。

使用datetime.utcnow() 以UTC+0 获取当前时间,即使您的机器有不同的时区(datetime.now() 会遵守)。

【讨论】:

  • 在同一个时区,同一个季节,是的。否则夏令时可能会发挥作用。 ;)
  • @LennartRegebro:很好的说明。但我认为时间 UTC 永远不会随着夏令时而改变;相反,随着 DLS 的启用和停用,本地时间将相对于 UTC 时间发生变化。
  • 没错。这就是为什么“相同时区”可以有不同的偏移量,所以即使它是相同的时区,如果那个时区使用夏令时,你也不能用时区朴素的日期时间替换它们。但是,UTC 不适用,因此如果我正确解释了他/她,它应该适用于该用户。
  • 我如何转换和比较以毫秒为单位的日期(整数格式日期)?
  • @Ashish:对于datetimed,我会使用d.toordinal() * 1000000 + d.microsecond
【解决方案2】:

由于两个日期都是 UTC,因此您不需要任何时区处理。 UTC 没有夏令时,datetime 库可以在没有任何外部库的情况下转换 UTC 时间。

如果您不清楚,并且日期字符串包含格式不指定偏移量的时区信息,那么您必须使用 pytz 或 dateutil。但从你的问题看来不是这样。

【讨论】:

    【解决方案3】:

    有一个非常强大的python 扩展名为dateutil。特别是,dateutil.parser 对于解析各种日期/时间格式以及是否提供时区信息非常有用。

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 2011-09-18
      • 2015-04-25
      相关资源
      最近更新 更多