Python时区转换

标签 python datetime timezone

如何在 Python 中将时间转换为另一个时区?

最佳答案

我发现最好的方法是将感兴趣的“时刻”转换为可识别 utc 时区的日期时间对象(在 python 中,datetime 对象不需要时区组件)。

那么你可以使用astimezone转换为感兴趣的时区 (reference)。

from datetime import datetime
import pytz

utcmoment_naive = datetime.utcnow()
utcmoment = utcmoment_naive.replace(tzinfo=pytz.utc)

# print "utcmoment_naive: {0}".format(utcmoment_naive) # python 2
print("utcmoment_naive: {0}".format(utcmoment_naive))
print("utcmoment:       {0}".format(utcmoment))

localFormat = "%Y-%m-%d %H:%M:%S"

timezones = ['America/Los_Angeles', 'Europe/Madrid', 'America/Puerto_Rico']

for tz in timezones:
    localDatetime = utcmoment.astimezone(pytz.timezone(tz))
    print(localDatetime.strftime(localFormat))

# utcmoment_naive: 2017-05-11 17:43:30.802644
# utcmoment:       2017-05-11 17:43:30.802644+00:00
# 2017-05-11 10:43:30
# 2017-05-11 19:43:30
# 2017-05-11 13:43:30

因此,在本地时区感兴趣的时刻(exists 的时间),您可以像这样将其转换为 utc (reference)。

localmoment_naive = datetime.strptime('2013-09-06 14:05:10', localFormat)

localtimezone = pytz.timezone('Australia/Adelaide')

try:
    localmoment = localtimezone.localize(localmoment_naive, is_dst=None)
    print("Time exists")

    utcmoment = localmoment.astimezone(pytz.utc)

except pytz.exceptions.NonExistentTimeError as e:
    print("NonExistentTimeError")

关于Python时区转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997577/

相关文章:

python - 如何让 feedparser 发送缓存控制 header ?

python - 计算 Pandas 数据框中的年龄

ruby-on-rails - Ruby on Rails - 将字符串转换为 DateTime 操作

javascript - 为什么新日期 ('2018-12-29' ) 返回 12 月 28 日?

python - 如何制作时区感知日期时间对象

java - 获取 EST 时区的 XMLGregorianCalendar 日期

python - Python 方法中未解析的引用

python - lxml 中的解析函数出错

python - "user = self.model(useremail=BmUserManager.normalize_email(useremail))"有什么用?它用于创建新的自定义用户吗?

mysql - 转换 MM/DD/YYYY HH :MM:SS to Unix Timestamp (SQL)