我正在编写一个Python脚本,其中包含两行代码,将传递到方法中的日期转换为UTC时间:
并且结果是:
结果变成了:
print "Timezone: %s" % get_localzone()
date = datetime.now(tz=get_localzone())
print "Local time: %s" % date
utc = pytz.utc
utc_date = date.astimezone(utc)
print "UTC date: %s" % utc_date
并且结果是:
Timezone: America/Chicago
Local time: 2015-06-17 14:58:45.224827-05:00
UTC date: 2015-06-17 19:58:45.224827+00:00
正如您所看到的,本地时间的偏移量为“-05:00”,没有任何问题,但当我使用相同时区创建自定义日期时间对象时:
date = datetime(2015, 6, 17, 14, 58, 45, tzinfo=get_localzone())
结果变成了:
Timezone: America/Chicago
Local time: 2015-06-17 14:58:45-05:51
偏移量从"-05:00"变为"-05:51"。我甚至使用了第一个"datetime.now()"生成的相同时间,时区也没有改变,有人能解释一下这是为什么吗?谢谢!
datetime.now(tz)
而不是tz.localize(datetime.now())
。后者可能会在本地时间模糊不清(例如,在夏令时转换期间)时失败。如果输入的时间不是现在,那么可以将is_dst
参数传递给tz.localize()
来消除歧义。 - jfslocalize()
的类似物中:在单个位置更新信息更容易(尽管已经在文档的顶部回答了这个常见问题)。 - jfs