【发布时间】:2014-12-18 09:19:11
【问题描述】:
我得到这样的输入:1410627645。
我需要将其转换为 PST。应该在 2014/09/13-10:00:00 左右。如何在 python/ruby 中转换它。如何识别时区?
【问题讨论】:
标签: python ruby datetime activesupport
我得到这样的输入:1410627645。
我需要将其转换为 PST。应该在 2014/09/13-10:00:00 左右。如何在 python/ruby 中转换它。如何识别时区?
【问题讨论】:
标签: python ruby datetime activesupport
Time.at(1410627645).to_datetime.in_time_zone("Pacific Time (US & Canada)")
#=> Sat, 13 Sep 2014 10:00:45 PDT -07:00
或者干脆
Time.at(1410627645).in_time_zone("Pacific Time (US & Canada)")
#=> Sat, 13 Sep 2014 10:00:45 PDT -07:00
【讨论】:
Time.at(1410627645).to_datetime
#=> Sat, 13 Sep 2014 19:00:45 +0200
【讨论】:
你可以使用datetime:
>>> import datetime
>>> datetime.datetime.fromtimestamp(1410627645)
datetime.datetime(2014, 9, 13, 22, 30, 45)
现在您可以在一个名为 my_time 的变量中解决这个问题:
>>> my_time = datetime.datetime.fromtimestamp(1410627645)
>>> "{}/{}/{}-{}:{}:{}".format(my_time.year,my_time.month,my_time.day,my_time.hour,my_time.minute,my_time.second)
'2014/9/13-22:30:45'
您可以通过time.gmtime识别时区:
>>> time.gmtime(1410627645)
time.struct_time(tm_year=2014, tm_mon=9, tm_mday=13, tm_hour=17, tm_min=0, tm_sec=45, tm_wday=5, tm_yday=256, tm_isdst=0)
【讨论】:
my_time.strftime('%Y/%m/%d-%H:%M:%S') 代替'...'.format(...) 调用。不要在没有指定时区的情况下使用fromtimestamp() 方法,否则它会返回不明确的天真日期时间对象。
所以基本上你也可以像这样使用strftime:
DateTime.strftime("1410627645",'%s')
【讨论】:
如果您的输入是“自纪元以来的秒数”(POSIX 时间),那么您可以使用datetime.fromtimestamp() 方法将其转换为 Python 中的细分时间。
获取 UTC 时区时间:
>>> from datetime import datetime, timezone
>>> utc_dt = datetime.fromtimestamp(1410627645, timezone.utc)
>>> utc_dt
datetime.datetime(2014, 9, 13, 17, 0, 45, tzinfo=datetime.timezone.utc)
>>> print(utc_dt)
2014-09-13 17:00:45+00:00
获取您当地时区的时间:
>>> local_dt = utc_dt.astimezone()
>>> local_dt
datetime.datetime(2014, 9, 13, 10, 0, 45,
tzinfo=datetime.timezone(datetime.timedelta(-1, 61200), 'PDT'))
>>> print(local_dt)
2014-09-13 10:00:45-07:00
获取指定时区的时间:
>>> import pytz
>>> dt = datetime.fromtimestamp(1410627645, pytz.timezone('America/Los_Angeles'))
>>> dt
datetime.datetime(2014, 9, 13, 10, 0, 45,
tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>)
>>> print(dt)
2014-09-13 10:00:45-07:00
【讨论】: