【问题标题】:Convert a UTC Timestamp to a datetime object, taking daylight savings time into account将 UTC Timestamp 转换为 datetime 对象,考虑夏令时
【发布时间】:2012-05-01 02:53:14
【问题描述】:

使用:

 time.mktime(datetime.datetime.now(pytz.timezone("UTC")).timetuple())

2012 年 4 月 19 日纽约 10:00 后不久的时间戳为 1334840917。鉴于此时间戳,我如何将其转换回考虑夏令时的日期时间对象?

如果我这样做:

   >>>eastern = pytz.timezone("Us/Eastern")
   >>>dt = datetime.datetime.fromtimestamp(1334840917,eastern)
   >>>dt.hour

输出为:9

【问题讨论】:

  • 您的时间戳是本地时间而不是 UTC 是否有原因?
  • 时间戳是 UTC,这不是什么:time.mktime(datetime.datetime.now(pytz.timezone("UTC")).timetuple()) 吗?
  • 是的,你是对的。我一直在使用calendar.timegm(datetime.datetime.utcnow().utctimetuple()),应该是一样的。

标签: python datetime pytz


【解决方案1】:

dt = datetime.datetime.fromtimestamp(1334840917 + time.daylight*3600)

【讨论】:

  • 我认为 time.daylight 使用本地时间来确定它是否是夏令时。但是,如果我有 2012 年 3 月 11 日之前的时间戳,我认为这不会起作用。
  • 是的,我认为您不想从其他来源获得时间。您不能只使用简单的时间戳来获取有关夏令时的信息,AFAIK。
猜你喜欢
  • 2014-06-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 2015-08-04
  • 2020-03-01
  • 1970-01-01
相关资源
最近更新 更多