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

khe*_*aud 7 python timezone datetime date

我从Python程序中的Web服务检索unix时间戳.此时间戳位于美国时区.为了将其插入到MySQL数据库中与其他对象(位于法国),我想将此时间戳转换为法国时区.

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

你有提示吗,我迷失在Python文档中?

vir*_*tor 6

如果它确实是一个unix时间戳,那么它是基于UTC的.只是为您的用例正确解释它.仅在必须将此日期作为文本打印时才应用时区翻译.

如果您将它作为时间戳存储在您身边,请保持原样.


And*_*ner 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
Run Code Online (Sandbox Code Playgroud)