python库pytz的使用

python的时间格式化,默认是走的系统时区,如果是做国际化应用,此时就会遇到一个问题了,机器可能分布于全球各地,有可能不同的机器会有不同的默认时区,此时就需要指定时区了。

python本来有一个时区相关的模块为datetime.timezone,它是用来描述固定偏移的时区(Fixed offset from UTC implementation of tzinfo),通常情况下它就够用:


tz = datetime.timezone(timedelta(hours=8))
datetime.datetime.now(tz)

但是有一些国家和地区,时差是变化的,比如有夏令时、冬令时之类,pytz库用于解决这个问题:


datetime.datetime.now(pytz.timezone('America/New_York'))

同时,pytz的使用也更简洁些,以下两种写法等效,都是UTC+0的时间:


import pytz
import datetime
datetime.datetime.now(tz=pytz.utc)
datetime.datetime.now(tz=pytz.timezone('UTC'))

如果是北京时间,即UTC+8的时间:


datetime.datetime.now(tz=pytz.timezone('Asia/Shanghai'))
datetime.datetime.now(tz=pytz.FixedOffset(8 * 60))

注意:pytz.FixedOffset传入的单位是分钟。

库里所支持区域位置,可以通过如下列表来找:


list(pytz.country_timezones.items())

其他

带时区的时间解析:


datetime.strptime('2021-02-02 00:00:00 +0800', '%Y-%m-%d %H:%M:%S %z')

 

发表于 2021年01月26日 23:48   修改于 2021年02月02日 15:38   评论:0   阅读:3367  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo