4

我收到一个固定时区的日期。我需要将其转换为本地机器的时区,但我不知道那是什么。如何使用 pytz (不是dateutil)来做到这一点?我找到了很多使用 dateutil 的解决方案,例如这个 answer,但我在 pytz 中找不到类似的功能。

4

1 回答 1

1

您可以通过 (UTC) Unix 时间戳进行转换:

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 Create unix timestamp in the future 五分钟的解决方案。

请注意,这不会告诉您本地时区什么,尽管您可以使用以下命令找出它与 UTC 的偏移量:

(local_dt - datetime.datetime.utcfromtimestamp(timestamp)).seconds
于 2012-09-04T14:33:47.737 回答