第四章时区陷阱
Python提供的用于处理日期和时间的标准模块为datetime。
书上提供了一个解释时区陷阱的视频,https://www.youtube.com/-5wpm-gesOY
标准时间为UTC,全球分为24个时区。
这章主要讲的应该是程序应用的时间跟当前时区不同会造成的麻烦。
基于datetime库提供了2个方法,一个是datetime.datetime.utcnow()输出当前的世界标准世界,一个是datetime.datetime.now()输出当前的时区时间/
import datetime
datetime.datetime.utcnow()
datetime.datetime(2020, 2, 20, 12, 14, 55, 571207)
datetime.datetime.now()
datetime.datetime(2020, 2, 20, 20, 15, 0, 604207)
但是这种结束是不包含时区信息的
python提供了pytz 这内置库配合datetime 可以制造包含时区信息的时间输出
import datetime
import pytz
def utcnow():
return datetime.datetime.now(tz=pytz.utc)
this_time=utcnow()
this_time
datetime.datetime(2020, 2, 20, 12, 47, 23, 734815, tzinfo=<UTC>)
this_time.isoformat()
'2020-02-20T12:47:23.734815+00:00'
python的第三方库提供了一个直接转化带了时区标志的
import iso8601
iso8601.parse_date(utcnow().isoformat())
datetime.datetime(2020, 2, 20, 12, 52, 53, 902817, tzinfo=datetime.timezone(datetime.timedelta(0), '+00:00'))
utcnow()
datetime.datetime(2020, 2, 20, 12, 53, 19, 893817, tzinfo=<UTC>)
iso8601.parse_date(utcnow().isoformat()) < utcnow()
其原理是直接吧带了时区标志的时间数据转化为datetime.datetime 数据格式,来让这2个数据直接进行比较跟运算
总结下,这章主要讲了程序运行需要基于本地的时区,不同的时区会造成程序运行的误差,而通过输出带有时区标志的
时间戳,可以对应转化当前时间、这种设计上的思路需要重视。
到这里第四章时区陷阱学习完毕了。








网友评论