前言
一般的时间字符串是这样的:2021-07-24 21:23:51
*其实少了时区信息,只是默认为东八区
所以也有这样写的:2021-07-24T21:23:51+08:00
*那个+08:00就代表是东八区
也有用unix时间戳的:1627133031.994444
*时间戳就是当前时间距离1970-01-01 00:00:00的秒数,是一段时间。
*虽然北京时间多了8小时,但是计算的时候起始时间也多了8小时,那就没影响了。
*没有时区问题,但是机器看得了,人看不了,还是需要时间字符串。
一、关于时区
python3的时区是这个:datetime.datetime.tzinfo,是个抽象类,定义了接口。他自己是能算时区了,但我们要用,得先给他写实现类。
实现类官方没给,一般是用pytz、dateutil这两个三方库。听说dateutil更好。
python3默认的话,是用所处环境(win、linux)的时区。
二、关于pytz
pytz拿东八区是用这个:pytz.timezone('Asia/Shanghai')
但其实不是标准的东八区,多了6分钟
(1)指定输入时间为东八区时间:
本机时区的时间 = datetime.datetime.now()
原先:本机时区的时间.replace(tzinfo=pytz.timezone('Asia/Shanghai')).timestamp()
改成:pytz.timezone('Asia/Shanghai').localize(本机时区的时间).timestamp()
三、关于dateutil
pip install python-dateutil
dateutil拿东八区是用这个:tz.gettz('Asina/Shanghai')
*tz是其中的模块:from dateutil import tz
(1)指定输入时间为东八区时间:
本机时区的时间 = datetime.datetime.now()
直接:本机时区的时间.replace(tzinfo=tz.gettz('Asina/Shanghai')).timestamp()