我有一个来自数据库的字典,我知道创建和安装匹配。在
untimed = {'install_id': 399142, 'create_dt': datetime.datetime(2013, 7, 7, 0, 33, 2), 'install_ts': 1373157182}
在QA上,当我运行以下代码时,一切都是正确的
^{pr2}$但当我在我的笔记本电脑上本地运行时,我得到(本地我在PST)
>>(mktime(untimed['create_dt'].timetuple()) - untimed['install_ts']) / 3600
7.0
为什么我没有得到相同的时间戳?我知道create_dt是UTC格式的,但在本地它强制它使用PST(-700)。在
注意:我已经把问题缩小到这个范围,但问题是我在尝试时得到了错误的时间戳
mktime(datetime.strptime(install['click_date'],'%Y-%m-%d %H:%M:%S').timetuple())
更具体地说,为什么在Convert python datetime to epoch with strftime中
>>> datetime.datetime(2012,04,01,0,0).strftime('%s') # This is equivalent to my issues above
'1333234800'
>>> (datetime.datetime(2012,04,01,0,0) - datetime.datetime(1970,1,1)).total_seconds()
1333238400.0
给出不同的价值观?在
unix时间戳是一个时间点和epoch之间的偏移值,它与时区无关。当它转换为人类可读的字符串,如“%Y-%m-%d%H:%m:%s”,它不包含任何时区信息时,python假定您要使用本地时区设置。
当您运行此
得到一个datetime对象,它不包含任何时区信息,只能解释为本地时间。如果在UTC服务器上运行,则对象解释为“2013-07-07 00:33:02 UTC”,如果在PST服务器上是“2013-07-07 00:33:02 PST”,则它们是时间线上的不同点,因此它们具有不同的unix时间戳值。要使其将install['click_date']视为UTC时间,需要添加时区偏移量:
^{pr2}$时区(0800我的服务器上)
第一个调用使用“2013-07-07 00:33:02”作为本地时间,第二个调用使用UTC时间。在
相关问题 更多 >
编程相关推荐