需求背景
需要给处于不同时区的用户,显示不同的当前时间。
如果直接使用 datetime.now() 返回的只是服务器的时间,无法满足不同时区用户的需求。
解决方法 ZoneInfo
参考:
https://docs.python.org/3/library/zoneinfo.html
从官方文档可看到,python 3.9 开始内置了这个库。用法:
Python 3.12.3 (main, Feb 4 2025, 14:48:35) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> from zoneinfo import ZoneInfo
>>>
>>> timezone = ZoneInfo("Asia/Shanghai")
>>> now = datetime.now(timezone)
>>> print(now)
2025-05-07 22:04:43.467295+08:00
>>>
>>> timezone = ZoneInfo("America/New_York")
>>> now2 = datetime.now(timezone)
>>> print(now2)
2025-05-07 10:05:42.687649-04:00
>>>
>>> print(datetime.now())
2025-05-07 22:06:53.280776
>>>
定义目标时区(如 'Asia/Shanghai', 'America/New_York', 'Europe/London'),传入 ZoneInfo 即可。
而且这种用法,不会影响 datetime.now() 的值,非常方便。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式