3.任何时区下都准确获取UTC+8时间

时区.jpg

【这是"冲谈技术"的第3篇原创文章】

大家好,我是冲冲,一名主要从事Python服务端开发的程序猿。

以后我会时不时在这里和大家分享服务端软件实际开发工作中用到的实用技术,这些都是历年实践经验的积累,希望大家喜欢!


今天给大家分享的实用技巧是任何时区下都准确获取UTC+8时间的方法,希望对大家有所帮助和启发。

首先,我们来看下任何时区下都准确获取UTC+8时间的样例。
示例代码如下:

from tzlocal import get_localzone
from datetime import datetime, timezone, timedelta

def utc_now():
    utc_now = datetime.utcnow().replace(tzinfo=timezone.utc)
    obj = utc_now.astimezone(timezone(timedelta(hours=8)))
    obj = datetime(obj.year, obj.month, obj.day, obj.hour, obj.minute, obj.second, obj.microsecond)
    zone = get_localzone()
    print('>>> zone: ', zone)
    print('>>> datetime.now: ', datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    print('>>> utc now: ', obj.strftime('%Y-%m-%d %H:%M:%S'))

先后设置Linux系统的时区变量TZ(例如:export TZ='America/New_York'和export TZ='Asia/Shanghai')
结果输出:

>>> zone:  America/New_York
>>> datetime.now:  2020-10-27 07:12:44
>>> utc now:  2020-10-27 19:12:44

>>> zone:  Asia/Shanghai
>>> datetime.now:  2020-10-27 19:13:15
>>> utc now:  2020-10-27 19:13:15

从上面可见,datetime.now()的方式会跟随时区变化,但是utc_now()的方式获取到的值不随系统时区变化。

相信大家已经了解了任何时区下都准确获取UTC+8时间的方法。
好啦,今天的实用技巧分享就到这里!
欢迎大家多多订阅我,每天分享一个实用知识点,共成长,交个朋友!下期见~~
具有MySQL的ORM和Client功能的库(pip install mysql-stream),欢迎大家下载使用,多多交流

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容