将unix时间戳更改为不同的时区 [英] Changing a unix timestamp to a different timezone
问题描述
我可以用数学功能,但有夏令时的问题。我喜欢使用Python时间和日期特定的函数来处理这些概念。
你有一个提示,我在Python文档中迷失了吗?
过去,当我们从服务提供商下载的文件的时间戳具有对应于PST时区的时间戳时,我也遇到了类似的问题。以下帮助我做了转换:
import pytz,datetime,time
import os
originalTimeStamp = os.stat(/ tmp / file-from-us-west-coast)。st_mtime
#打印例如2010-03-31 13:01:18
打印original:,datetime.datetime.fromtimestamp(originalTimeStamp)
#重新解释
originalTimeZone =America / Los_Angeles
targetTimeZone =Europe / Paris
newTimeStamp = pytz.timezone(originalTimeZone).localize(datetime.datetime.fromtimestamp(originalTimeStamp))。astimezone(pytz.timezone(targetTimeZone))
#打印例如2010-03-31 22:01:18 + 02:00
打印new:,newTimeStamp
#从epoch转换回秒钟
newTimeStamp = time.mktime newTimeStamp.timetuple())
#打印时间差异小时
打印(newTimeStamp - originalTimeStamp)/ 3600.0
I retrieve a unix timestamp from a web service in a Python program. This timestamp is in a USA timezone. In order to insert it in a MySQL database with other objects, localized in France, I would like to convert this timestamp to the French timezone.
I could do it with mathematical functions, but there is the issue of daylight savings time. I would prefer to use Python time and date specific functions which should deal with these concepts.
Do you have a hint, I am lost in the Python documentation?
I had a similar problem in the past when the timestamps of the files we downloaded from a service provider had timestamps corresponding to the PST time zone. The following helped me do to the conversion:
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时间戳更改为不同的时区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!