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)
猜測有系統環境變量影響到了