# Date in Python **Published by:** [仓佑伽措](https://paragraph.com/@gatro/) **Published on:** 2021-11-07 **URL:** https://paragraph.com/@gatro/date-in-python ## Content TimeZone 💡 没有时区信息时,默认是本地时区。基本原则:外部参数用本地时区,存储和一般流程用 UTC。 pytz pytz.timezone('Asia/Shanghai') pytz.utc datetime 对象 默认时区信息为None,但一些日期操作会默认使用系统的时区,比较保险的是调用一次astimezone()显示加上本地时区。 replace(tzinfo=):不改变具体时间,只替换时区。 astimezone(tz=):改变时区,同时改变到对应时区的时间,不加参数转为本地时区。 pandas.Timestamp 不带时区信息,不会使用默认时区 用tz_localize('UTC')加上时区 (replace) 用tz_convert('UTC')转换时区 (astimezone) 过滤时间问题(df[df["candle_begin_time"] > date]) 两边都没有时区信息时,会出现用 UTC 时间跟 UTC+8 进行对比的情况。 其中一个有时区信息时,会报错。 df 用 df["candle_begin_time"].dt.tz_localize('UTC') 加上对应时区(抓取的数据一般都是 UTC 时间),date 用 astimezone()显式加上本地时区。再进行对比,最准确。 String → datetime 不带时区信息,隐式使用系统时区 Pymongo / Pymodm 读取日期数据 Pymodm 默认不带时区信息,astimezone()会处理成本地时区,但时间不变。加上CodecOptions会读取时区信息。 ISO 8601 from import dateutil.parser dateutil.parser.parse('') to Local to ISO 8601: import datetime datetime.datetime.now().isoformat() >>> 2020-03-20T14:28:23.382748 UTC to ISO 8601: import datetime datetime.datetime.utcnow().isoformat() >>> 2020-03-20T01:30:08.180856 Local to ISO 8601 without microsecond: import datetime datetime.datetime.now().replace(microsecond=0).isoformat() >>> 2020-03-20T14:30:43 UTC to ISO 8601 with TimeZone information (Python 3): import datetime import pytz datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat() >>> 2020-03-20T01:31:12.467113+00:00 datetime.datetime.now().astimezone(pytz.UTC).isoformat() >>> 2020-07-04T07:02:31.932029+00:00 UTC to ISO 8601 with Local TimeZone information without microsecond (Python 3): import datetime datetime.datetime.now().astimezone().replace(microsecond=0).isoformat() >>> 2020-03-20T14:31:43+13:00 Local to ISO 8601 with TimeZone information (Python 3): import datetime datetime.datetime.now().astimezone().isoformat() >>> 2020-03-20T14:32:16.458361+13:00 Notice there is a bug when using astimezone() on utc time. This gives an incorrect result: datetime.datetime.utcnow().astimezone().isoformat() #Incorrect resul ## Publication Information - [仓佑伽措](https://paragraph.com/@gatro/): Publication homepage - [All Posts](https://paragraph.com/@gatro/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@gatro): Subscribe to updates - [Twitter](https://twitter.com/cragodn): Follow on Twitter