Python 获取不同时区的当前时间

文章目录

    需求背景

    需要给处于不同时区的用户,显示不同的当前时间。

    如果直接使用 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式