我在Python程序中从Web服务中检索到一个Unix时间戳。该时间戳位于美国时区。为了将其与其他物体一起插入到位于法国的MySQL数据库中,我想将此时间戳转换为法国时区。
我可以使用数学函数来完成此操作,但是存在夏令时的问题。我更愿意使用Python中处理这些概念的时间和日期具体函数。
您有什么提示吗?我在Python文档中迷失了方向。
我在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