python3 时区 时间戳 指定输入时间为东八区时间、北京时间

前言

一般的时间字符串是这样的: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()


版权声明:本文为u013595395原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。