首页  >  文章  >  后端开发  >  如何使用 Python 标准库将 UTC 日期时间转换为本地日期时间?

如何使用 Python 标准库将 UTC 日期时间转换为本地日期时间?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 09:02:02334浏览

How to Convert UTC Datetime to Local Datetime Using Python Standard Library?

使用 Python 标准库将 UTC 日期时间转换为本地日期时间

在处理日期时间对象时,经常需要在 UTC(协调一致)之间进行转换世界时间)和当地时间。 Python 标准库提供了内置功能来完成此操作。

pytz Python 3.3 的替代方案

在 Python 3.3 及更高版本中,时区模块简化了转换过程:

<code class="python">from datetime import datetime, timezone

def utc_to_local(utc_dt):
    return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None)</code>

Python 2/3 的解决方案

对于 Python 2 和 3,另一种方法是使用 calendar.timegm 和 datetime.fromtimestamp:

<code class="python">import calendar
from datetime import datetime, timedelta

def utc_to_local(utc_dt):
    timestamp = calendar.timegm(utc_dt.timetuple())
    local_dt = datetime.fromtimestamp(timestamp)
    assert utc_dt.resolution >= timedelta(microseconds=1)
    return local_dt.replace(microsecond=utc_dt.microsecond)</code>

示例用法

为了说明转换,请考虑以下示例:

<code class="python">from datetime import datetime

utc_dt = datetime(2023, 7, 18, 12, 0, 0, tzinfo=timezone.utc)

local_dt = utc_to_local(utc_dt)
print(local_dt)</code>

输出:

2023-07-18 18:00:00.000000+06:00

无微秒分辨率的日期时间注意事项

如果 UTC 日期时间没有微秒分辨率,astimezone 方法可能会引入原始日期时间中不存在的微秒值。为了确保精度,请使用为 Python 2/3 提供的替代方法。

处理 DST 更改

两种解决方案都考虑了夏令时 (DST) 更改并正确将 UTC 日期时间转换为适当的本地时间,并根据需要应用或删除 DST。

以上是如何使用 Python 标准库将 UTC 日期时间转换为本地日期时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn