时区转换

    我们可以先通过 utcnow() 拿到当前的UTC时间,再转换为任意时区的时间:

    # 拿到UTC时间,并强制设置时区为UTC+0:00:

    >>> utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)

    >>> print(utc_dt)

    2015-05-18 09:05:12.377316+00:00

    # astimezone()将转换时区为北京时间:

    >>> bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))

    >>> print(bj_dt)

    2015-05-18 17:05:12.377316+08:00

    # astimezone()将转换时区为东京时间:

    >>> tokyo_dt = utc_dt.astimezone(timezone(timedelta(hours=9)))

    >>> print(tokyo_dt)

    2015-05-18 18:05:12.377316+09:00

    # astimezone()将bj_dt转换时区为东京时间:

    >>> tokyo_dt2 = bj_dt.astimezone(timezone(timedelta(hours=9)))

    >>> print(tokyo_dt2)

    2015-05-18 18:05:12.377316+09:00

    时区转换的关键在于,拿到一个 datetime 时,要获知其正确的时区,然后强制设置时区,作为基准时间。

    利用带时区的 datetime ,通过 astimezone() 方法,可以转换到任意时区。

    注:不是必须从UTC+0:00时区转换到其他时区,任何带时区的 datetime 都可以正确转换,例如上述 bj_dt tokyo_dt 的转换。