Ale*_*ato 3 python time datetime date
来自http://docs.python.org/library/time.html:
time.mktime(t):这是localtime()的反函数.它的参数是struct_time或完整的9元组(因为需要dst标志;如果它是未知的,则使用-1作为dst标志),它以本地时间而不是UTC表示时间.它返回一个浮点数,以便与time()兼容.如果输入值不能表示为有效时间,则会引发OverflowError或ValueError(这取决于Python或底层C库是否捕获到无效值).它可以生成时间的最早日期取决于平台.
这表示您需要在当地时间而不是UTC指定时间元组.但是,我想用UTC指定; 我不想在盒子上使用本地时区.
有什么方法可以从datetime到时间戳,其中时间被视为UTC?当我转换为时间戳和从时间戳转换时,我希望能够将所有内容保存在规范化的UTC表单(datetime对象)中.
我希望能够做这样的事情,让x和y出现相同:
y = datetime.datetime.utcfromtimestamp(time.mktime(x.timetuple()))
x = dateutil.parser.parse('Wed, 27 Oct 2010 22:17:00 GMT')
stamp = time.mktime(x.timetuple())
y = datetime.datetime.utcfromtimestamp(stamp)
x
datetime.datetime(2010, 10, 27, 22, 17, tzinfo=tzutc())
y
datetime.datetime(2010, 10, 28, 6, 17)
Run Code Online (Sandbox Code Playgroud)
我想你正在寻找calendar.timegm
:
import datetime
import dateutil.parser
import calendar
x = dateutil.parser.parse('Wed, 27 Oct 2010 22:17:00 GMT')
stamp = calendar.timegm(x.timetuple())
y = datetime.datetime.utcfromtimestamp(stamp)
print(repr(x))
# datetime.datetime(2010, 10, 27, 22, 17, tzinfo=tzutc())
print(repr(y))
# datetime.datetime(2010, 10, 27, 22, 17)
Run Code Online (Sandbox Code Playgroud)