我接收到一个特定时区的日期,需要将其转换为本地计算机的时区,但我不知道本地时区是什么。如何使用pytz(而不是 dateutil)进行此操作?我找到了许多使用dateutil的解决方案,例如此答案,但我找不到pytz中类似的函数。
foreign_naive = datetime.datetime(2012, 3, 11, 6, 0, 0)
foreign_timezone = 'US/Eastern'
foreign_dt = pytz.timezone(foreign_timezone).localize(foreign_naive)
timestamp = time.mktime(foreign_dt).astimezone(pytz.utc).timetuple()
local_dt = datetime.datetime.fromtimestamp(timestamp)
这里使用了Python创建未来五分钟的Unix时间戳的解决方案。
请注意,这并不会告诉您本地时区是什么,但您可以使用以下方法找出该时间相对于UTC的偏移量:
(local_dt - datetime.datetime.utcfromtimestamp(timestamp)).seconds
datetime.datetime.fromtimestamp
与 datetime.datetime.utcfromtimestamp
进行比较,可以得到在 timestamp
处的偏移量。 - ecatmurdatetime.datetime.fromtimestamp
。 - ecatmur
pytz
中找不到类似的函数的原因是它不存在。pytz
要求你命名时区,以便可以查找它。 - Mark Ransom