【问题标题】:Timezone Conversion From UTC to new time zone时区转换从 UTC 到新时区
【发布时间】:2016-10-10 19:25:55
【问题描述】:

我在 python 中将 UTC 转换为新时区时遇到了很多麻烦。

数据原本是一个带进来的字符串,并成功转换为UTC,如下:

df['order delivery time'] = pd.to_datetime(df['order delivery time'])

接下来我尝试写一个这样的函数:

eastern = pytz.timezone('US/Eastern')
central = pytz.timezone('US/Central')
pacific = pytz.timezone('US/Pacific')

def change_tz(time, region):
    if region == 'sf':
        return time.astimezone(pytz.timezone(pacific))
    elif region == 'chi':
        return time.astimezone(pytz.timezone(central))
    elif region == 'nyc':
        return time.astimezone(pytz.timezone(eastern))

然后申请:

 df['order delivery time ADJUSTED'] = df.apply(lambda row: change_tz(row['order delivery time'], row['region']), axis=1)

我收到此错误:

 AttributeError: ("'US/Central' object has no attribute 'upper'", u'occurred at index 0')

我也试过这样的行:

 if region == 'sf':
      return datetime.fromtimestamp(time, tz='US/Pacific')

还有:

 if region == 'sf':
      return tz.fromutc(datetime.utcfromtimestamp(time).replace(tzinfo='US/Pacific'))

请帮我转换时区!谢谢!

【问题讨论】:

    标签: python timezone timestamp


    【解决方案1】:

    我过去曾成功使用 pytz 和 dateutil.parser:

    import pytz
    import dateutil.parser
    
    date_needed = dateutil.parser.parse(request.POST.get("date_needed"))
    item.date_needed = pytz.timezone("America/Phoenix").localize(date_needed, is_dst=None)
    

    【讨论】:

      【解决方案2】:

      AttributeError: ("'US/Central' 对象没有属性 'upper'", u'发生在索引 0')

      central 已经是 pytz.timezone 对象。不要将它传递给pytz.timezone()——直接使用它。

      尚不清楚在您的情况下 time 变量是什么 (type(time))。

      如果time 是一个代表 Unix 时间的浮点数,那么您可以使用以下方法在给定时区中获取对应的时区感知日期时间对象:

      from datetime import datetime
      
      dt = datetime.fromtimestamp(unix_time, central)
      

      如果time 已经是一个timezone-aware 表示UTC 时间的日期时间对象,则将其转换为给定时区:

      dt = dt_utc.astimezone(central)
      

      您可以使用tz_convert() 方法转换pandas 对象以将tz-aware 数据转换为另一个时区:

      ts_utc.tz_convert(central)
      

      【讨论】:

        猜你喜欢
        • 2011-09-16
        • 2021-11-10
        • 1970-01-01
        • 2018-09-03
        • 2020-03-21
        • 2022-01-09
        • 2019-10-30
        • 2017-05-25
        • 2021-10-10
        相关资源
        最近更新 更多