为了账号安全,请及时绑定邮箱和手机立即绑定

Python时区转换

Python时区转换

开心每一天1111 2019-10-18 11:16:43
我正在寻找一种快速输入时间的方式,然后将其转换为其他时区(可能多达10个不同的时区)抱歉。我完全不熟悉python的时间,如果有人可以让我朝正确的方向前进,我将非常感激。
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

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


然后,您可以使用astimezone转换为感兴趣的时区(参考)。


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

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


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")


查看完整回答
反对 回复 2019-10-18
?
HUH函数

TA贡献1836条经验 获得超4个赞

使用pytz


from datetime import datetime

from pytz import timezone


fmt = "%Y-%m-%d %H:%M:%S %Z%z"

timezonelist = ['UTC','US/Pacific','Europe/Berlin']

for zone in timezonelist:


    now_time = datetime.now(timezone(zone))

    print now_time.strftime(fmt)


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 657 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信