使用 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中文网其他相关文章!