一尘不染

将UNIX时间戳更改为其他时区

python

我从Python程序中的Web服务检索Unix时间戳。该时间戳是美国时区。为了将它与其他在法国本地化的对象一起插入MySQL数据库中,我想将此时间戳转换为法国时区。

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

您有提示吗,我迷失了Python文档?


阅读 335

收藏
2021-01-20

共1个答案

一尘不染

过去,当我们从服务提供商处下载文件的时间戳具有与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
2021-01-20