pytz是一个Python库,用于处理世界各地的时间和时区转换。它提供了一种简单的方法来将时间从一个时区转换为另一个时区,其中包括与UTC(协调世界时)的转换。通过使用pytz库,您可以轻松地将任何日期和时间转换为UTC时间,或将其从UTC时间转换为任何其他时区的本地时间。这使得在不同时区之间进行时间转换变得非常方便。

19 浏览
0 Comments

pytz是一个Python库,用于处理世界各地的时间和时区转换。它提供了一种简单的方法来将时间从一个时区转换为另一个时区,其中包括与UTC(协调世界时)的转换。通过使用pytz库,您可以轻松地将任何日期和时间转换为UTC时间,或将其从UTC时间转换为任何其他时区的本地时间。这使得在不同时区之间进行时间转换变得非常方便。

将一个原始时间和一个tzinfo转换成UTC时间的正确方法是什么?

假设有:

d = datetime(2009, 8, 31, 22, 30, 30)

tz = timezone('US/Pacific')

第一种方法,受pytz启发:

d_tz = tz.normalize(tz.localize(d))

utc = pytz.timezone('UTC')

d_utc = d_tz.astimezone(utc)

第二种方法,来自UTCDateTimeField:

def utc_from_localtime(dt, tz):

dt = dt.replace(tzinfo=tz)

_dt = tz.normalize(dt)

if dt.tzinfo != _dt.tzinfo:

# 有问题...

# 找出哪个有dst偏移

if _dt.tzinfo.dst(_dt):

_dt -= _dt.tzinfo.dst(_dt)

else:

_dt += dt.tzinfo.dst(dt)

return _dt.astimezone(pytz.utc)

不用说,这两种方法对于很多时区会产生不同的结果。

问题是-什么是正确的方法?

0