在Python中,如何仅使用datetime包获取本地化时间戳?

时间:2016-08-26 17:39:29

标签: python datetime epoch python-datetime

我有一个以秒为单位的unix时间戳(例如1294778181)我可以使用

转换为UTC
from datetime import datetime
datetime.utcfromtimestamp(unix_timestamp)

问题是,我想在'US/Eastern'中获得相应的时间(考虑任何DST),我不能使用pytz和其他实用程序。

我只能使用datetime

这可能吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

最简单,但不是超级解决方案是使用timedelta

import datetime
>>> now = datetime.datetime.utcnow()

美国/东方比UTC晚了5个小时,所以让我们创建一个5小时作为timedelta对象并使其为负数,这样当回读我们的代码时我们可以看到偏移为-5并且没有魔力决定何时添加以及何时减去时区偏移量

>>> eastern_offset = -(datetime.timedelta(hours=5))
>>> eastern = now + eastern_offset
>>> now
datetime.datetime(2016, 8, 26, 20, 7, 12, 375841)
>>> eastern
datetime.datetime(2016, 8, 26, 15, 7, 12, 375841)

如果我们想要修复DST,我们会像这样通过smoething运行日期时间(不完全准确,时区不是我的专业知识(现在谷歌搜索它有点变化,你好))

if now.month > 2 and now.month < 12:
    if (now.month == 3 and now.day > 12) or (now.month == 11 and now.day < 5):
        eastern.offset(datetime.timedelta(hours=5))

你甚至可以进入更多的细节,增加时间,找出每年的变化情况......我不打算完成所有这些:)