将unix时间戳更改为不同的时区



我从Python程序中的web服务检索unix时间戳。此时间戳位于美国时区。为了将它与其他对象一起插入MySQL数据库中,我想将这个时间戳转换为法国时区。

我可以用数学函数来做,但是有夏令时的问题。我更喜欢使用Python的时间和日期特定函数来处理这些概念。

你有没有提示,我在Python文档中迷路了?

如果它真的是unix时间戳,那么它是基于UTC的。只需根据您的用例正确地解释它。只有当必须将此日期打印为文本时,才应用时区转换。

如果你也把它作为时间戳存储在你这边,保持它的原样

我过去也遇到过类似的问题,当时我们从服务提供商下载的文件的时间戳对应于PST时区。下面的操作帮助我完成了转换:

import pytz, datetime, time
import os
originalTimeStamp = os.stat("/tmp/file-from-us-west-coast").st_mtime
# prints e.g. 2010-03-31 13:01:18
print "original:",datetime.datetime.fromtimestamp(originalTimeStamp)
# re-interpret 
originalTimeZone = "America/Los_Angeles"
targetTimeZone   = "Europe/Paris"
newTimeStamp = pytz.timezone(originalTimeZone).localize(datetime.datetime.fromtimestamp(originalTimeStamp)).astimezone(pytz.timezone(targetTimeZone))
# prints e.g. 2010-03-31 22:01:18+02:00
print "new:     ",newTimeStamp
# convert back to seconds since epoch
newTimeStamp = time.mktime(newTimeStamp.timetuple())
# print time difference in hours
print (newTimeStamp - originalTimeStamp) / 3600.0

pytz可能对您有所帮助。正如viraptor所说,理想情况下,您应该将所有日期时间存储为unix UTC时间戳,并且仅在打印出来时将时间本地化。

相关内容

  • 没有找到相关文章

最新更新