我从Python程序中的Web服务检索unix时间戳。此时间戳位于美国时区。为了将其插入到MySQL数据库中与其他对象(在法国本地化),我想将此时间戳转换为法国时区。
我可以用数学函数来做,但是有夏令时的问题。我更喜欢使用Python时间和日期特定的函数来处理这些概念。
你有提示,我迷失在Python文档中吗?
答案 0 :(得分:5)
如果它确实是一个unix时间戳,那么它是基于UTC的。只是为您的用例正确解释它。仅当您必须将此日期打印为文本时才应用时区翻译。
如果您将它作为时间戳存储在您身边,请保持原样。
答案 1 :(得分:5)
我过去遇到过类似的问题,我们从服务提供商下载的文件的时间戳有时间戳对应于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
答案 2 :(得分:1)
pytz可能会帮到你。就像viraptor所说的那样,理想情况下,您将所有日期时间存储为unix UTC时间戳,并且只将您打印出来的时间本地化。