将unix时间戳更改为不同的时区 [英] Changing a unix timestamp to a different timezone

查看:197
本文介绍了将unix时间戳更改为不同的时区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Python程序中从Web服务中检索unix时间戳。这个时间戳记在美国时区。为了将其插入到其他对象的MySQL数据库中,本地化在法国,我想将此时间戳转换为法语时区。



我可以用数学功能,但有夏令时的问题。我喜欢使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆