我有一个以秒为单位的unix时间戳(例如1294778181
)我可以使用
from datetime import datetime
datetime.utcfromtimestamp(unix_timestamp)
问题是,我想在'US/Eastern'
中获得相应的时间(考虑任何DST),我不能使用pytz
和其他实用程序。
我只能使用datetime
。
这可能吗? 谢谢!
答案 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))
你甚至可以进入更多的细节,增加时间,找出每年的变化情况......我不打算完成所有这些:)