【问题标题】:Converting EPOC datetime to PST in python/ruby在 python/ruby 中将 EPOCH 日期时间转换为 PST
【发布时间】:2014-12-18 09:19:11
【问题描述】:

我得到这样的输入:1410627645

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

【问题讨论】:

    标签: python ruby datetime activesupport


    【解决方案1】:
    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】:
      Time.at(1410627645).to_datetime
      #=> Sat, 13 Sep 2014 19:00:45 +0200
      

      【讨论】:

        【解决方案3】:

        你可以使用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() 方法,否则它会返回不明确的天真日期时间对象。
        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2011-10-09
            • 2012-04-01
            • 2018-07-25
            • 1970-01-01
            • 2017-03-23
            • 1970-01-01
            • 1970-01-01
            • 2014-06-10
            • 2020-11-21
            相关资源
            最近更新 更多