在python / ruby​​中将EPOCH日期时间转换为PST

时间:2014-12-18 09:19:11

标签: python ruby datetime activesupport

我得到一个输入:1410627645

我需要将其转换为PST。应该在2014/09 / 13-10:00:00左右。我如何在python / ruby​​中转换它。我如何识别时区?

5 个答案:

答案 0 :(得分:2)

Time.at(1410627645).to_datetime
#=> Sat, 13 Sep 2014 19:00:45 +0200

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您可以使用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)

答案 3 :(得分:0)

所以基本上你也可以像这样使用strftime:

DateTime.strftime("1410627645",'%s')

答案 4 :(得分:0)

如果您输入的是“自Epoch以来的秒数”(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