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

Python 将unix时间戳更改为其他时区,python,datetime,date,timezone,Python,Datetime,Date,Timezone,我在Python程序中从web服务检索unix时间戳。此时间戳位于美国时区。为了将其与其他对象一起插入MySQL数据库(在法国本地化),我想将此时间戳转换为法国时区 我可以用数学函数来做,但有夏令时的问题。我更喜欢使用Python特定于时间和日期的函数,这些函数应该处理这些概念 有没有提示,我在Python文档中迷失了方向?如果它确实是unix时间戳,那么它是基于UTC的。只需根据您的用例正确地解释它。仅当必须将此日期打印为文本时,才应用时区转换 如果您也将其存储为时间戳,请保持原样。可能会对您

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

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


有没有提示,我在Python文档中迷失了方向?

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


如果您也将其存储为时间戳,请保持原样。

可能会对您有所帮助。正如viraptor所说,理想情况下,您应该将所有日期时间存储为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

它不是“unix时间戳”,而是从1970年1月1日起经过的秒数,基于西太平洋时区。我知道这很难看,但这是Facebook API。我不能保持它的原样,因为我有其他基于真实“unix时间戳”的对象:UTCIf你知道这是太平洋时间,没有变化,你可以加上8个小时使其成为UTC并用作unix时间戳。事实上,Facebook api没有考虑到法国在夏天是GMT+2,在春天是GMT+1。所有数据都存储在DB中作为填充日期,但位于太平洋标准时区。例如,我在facebook网站上创建了一个2011-07-15 23:00的活动。它存储为2011-07-15 23:00-0000(太平洋标准时间)。所有的问题都来自这里。pytz解决了这个问题零对应什么?1970年1月1日00:00:00太平洋标准时间还是1970年1月1日01:00:00太平洋标准时间?好问题,我的头撞在墙上3个小时。。。事实上,它不是PST,而是PDT。我有一个额外的小时(这使我得到了-7小时而不是-8小时),但在法国,我们夏天是UTC+2小时,冬天是UTC+1小时。我无法用数学函数来计算它。我可能会要求Pytz我的问题不准确,我错过了问题的来源。我打开了另一条线索,即使我的问题解释得很糟糕(我还没有找到确切的问题),你还是解决了:)如果你能测试任意日期,作为最终测试,我建议测试2011年11月3日发生了什么。欧洲将有冬季,而美国仍有夏令时(参见示例)