我在将Python转换为python中的新时区时遇到了一些麻烦。
数据最初是一个字符串,并且成功转换为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'))
请帮我转换时区!谢谢!
答案 0 :(得分:0)
我过去使用过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)
答案 1 :(得分:0)
属性错误:(&#34;&#39;美国/中部&#39;对象没有属性&#39;鞋帮&#39;&#34;,u&#39;发生在索引0&#39;)< / p>
central
已经是pytz.timezone
个对象。不要将其传递给pytz.timezone()
- 直接使用它。
目前尚不清楚您的time
变量是什么type(time)
。
如果time
是表示Unix时间的浮点数,那么您可以使用以下命令获取给定时区中对应的时区感知日期时间对象:
from datetime import datetime
dt = datetime.fromtimestamp(unix_time, central)
如果time
已经是表示UTC时间的timezone-aware日期时间对象,那么将其转换为给定时区:
dt = dt_utc.astimezone(central)
您可以使用tz_convert()
方法转换pandas对象,将tz感知数据转换为另一个时区:
ts_utc.tz_convert(central)