Kha*_*ino 6 python python-datetime
>>> now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
>>> dt = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond, pytz.timezone('Asia/Tokyo'))
>>> now
datetime.datetime(2018, 9, 7, 16, 9, 24, 177751, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
>>> dt = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond, pytz.timezone('Asia/Tokyo'))
>>> dt
datetime.datetime(2018, 9, 7, 16, 9, 24, 177751, tzinfo=<DstTzInfo 'Asia/Tokyo' LMT+9:19:00 STD>)
Run Code Online (Sandbox Code Playgroud)
因为now我得到了JST + 9:00:00,因为dt我得到了LMT +9:19:00.我不明白为什么datetime使用不同的格式.
当我比较他们不同的时间时:
>>> now == dt
False
Run Code Online (Sandbox Code Playgroud)
我怎么能转换LMT到JST,这样now == dt的True?我需要使用datetime(2018, 9, 7, 16, 9, 24, 177751, timezone('Asia/Tokyo')),同时我想要JST.
正如相关问题的答案中所述,切勿使用 datetime() 创建带有时区信息的日期时间。相反,您应该localize在使用 UTC 创建日期时间后将其转换为 JST。
>>> import pytz
>>> from datetime import datetime
>>>
>>> now = datetime.now(pytz.utc)
>>> dt = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond, pytz.utc)
>>> jst = pytz.timezone('Asia/Tokyo')
>>> jst.normalize(now)
datetime.datetime(2018, 9, 7, 20, 21, 44, 653897, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
>>> jst.normalize(dt)
datetime.datetime(2018, 9, 7, 20, 21, 44, 653897, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
>>> now == dt
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |