且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将UTC日期时间字符串转换为本地日期时间

更新时间:2023-02-03 15:05:36

如果您不想提供自己的 tzinfo 对象,请查看 python-dateutil 库。它在 zoneinfo(Olson)数据库之上提供了 tzinfo 实现。

If you don't want to provide your own tzinfo objects, check out the python-dateutil library. It provides tzinfo implementations on top of a zoneinfo (Olson) database such that you can refer to time zone rules by a somewhat canonical name.

from datetime import datetime
from dateutil import tz

# METHOD 1: Hardcode zones:
from_zone = tz.gettz('UTC')
to_zone = tz.gettz('America/New_York')

# METHOD 2: Auto-detect zones:
from_zone = tz.tzutc()
to_zone = tz.tzlocal()

# utc = datetime.utcnow()
utc = datetime.strptime('2011-01-21 02:37:21', '%Y-%m-%d %H:%M:%S')

# Tell the datetime object that it's in UTC time zone since 
# datetime objects are 'naive' by default
utc = utc.replace(tzinfo=from_zone)

# Convert time zone
central = utc.astimezone(to_zone)

编辑展开示例以显示 strptime 的使用情况

Edit Expanded example to show strptime usage

编辑2 ong>固定的API使用情况,以显示更好的入口点方法

Edit 2 Fixed API usage to show better entry point method

编辑3 包括的时区自动检测方法(雅林)

Edit 3 Included auto-detect methods for timezones (Yarin)