offset-naive是不含时区的时间类型,而offset-aware是有时区时间类型
>>> a = pd.to_datetime('2099-09-30 16:00:00')
>>> b = a.tz_localize('Asia/Shanghai')
>>> print('type:', type(a), type(b))
type: <class 'pandas._libs.tslibs.timestamps.Timestamp'> <class 'pandas._libs.tslibs.timestamps.Timestamp'>
>>> print('tzinfo:', a.tzinfo, b.tzinfo)
tzinfo: None Asia/Shanghai
>>> print("offset-naive转offset-aware:", a.tz_localize('Asia/Shanghai'), a.tz_localize('Asia/Shanghai').tzinfo)
offset-naive转offset-aware: 2099-09-30 16:00:00+08:00 Asia/Shanghai
>>>
>>> print("offset-aware转offset-naive:",b.replace(tzinfo=None), b.replace(tzinfo=None).tzinfo)
offset-aware转offset-naive: 2099-09-30 16:00:00 None
>>> print("时区转化:",b.tz_convert('Asia/Tokyo'))
时区转化: 2099-09-30 17:00:00+09:00
疑问:
在两个环境下pd.to_datetime(‘2099-09-30T16:00:00+8:00’)返回的可能是offset-naive也可能是offset-aware
windows python 3.6.5:
>>> print( pd.to_datetime('2099-09-30T16:00:00+8:00').tzinfo)
None
linux python 3.6.6
>>> print( pd.to_datetime('2099-09-30T16:00:00+8:00').tzinfo)
pytz.FixedOffset(480)
猜测有系统环境变量影响到了