我有工作代码。我的问题是为什么这样做?
#"04/13/05 2:30pm EDT" <- original date string
from datetime import datetime, timedelta
from pytz import timezone
import pytz
import time
T= time.struct_time((2005,4,13,14,30,0,0,0,1))
t = time.mktime(T)
print(t)
打印
1113417000,
根据在线转换器,http://www.epochconverter.com/,打印
Your time zone: 4/13/2005 2:30:00 PM GMT-4
这是正确的。我的问题是,它如何知道EDT的时间是GMT-4? 9元组中的最后一个是“dst flag”,但是有许多时区使用DST。那么它如何检测正确的时区?
答案 0 :(得分:2)
它通过stdlib C time functions向您的操作系统询问该信息。
此模块中定义的大多数函数调用具有相同名称的平台C库函数。查阅平台文档有时可能会有所帮助,因为这些函数的语义因平台而异。
您可以为DST标志传递-1以让库为您设置它,请参阅time.struct_time
。在我的Mac OS X 10.7.5设置中,为Europe / Oslo时区配置,这给了我:
>>> import time
>>> time.mktime((2005,4,13,14,30,0,0,0,-1))
1113395400.0
或,由epochconverter'翻译':
Your time zone: 4/13/2005 2:30:00 PM GMT+2
答案 1 :(得分:1)
根据documentation函数time.mktime(t)采用以本地时间表示的参数(struct_time),而不是UTC。本地时间取自您的操作系统。您可以使用例如time.tzname
查看当地的夏令时区时区