pytz - Converting UTC and timezone to local time
我在utc时区有一个
1 | utc_time = datetime.datetime.utcnow() |
还有一个pytz时区对象:
1 | tz = timezone('America/St_Johns') |
将
我想我明白了:
1 | pytz.utc.localize(utc_time, is_dst=None).astimezone(tz) |
该行首先将天真(不知道时区)
我可以建议使用箭头吗?如果我理解这个问题:
1 2 3 4 5 6 7 | >>> import arrow >>> utc = arrow.utcnow() >>> utc <Arrow [2014-08-12T13:01:28.071624+00:00]> >>> local = utc.to("America/St_Johns") >>> local <Arrow [2014-08-12T10:31:28.071624-02:30]> |
你也可以使用
1 | tz.fromutc(utc_time) |
我同意Tzach的回答。只是想包括不需要is_dst参数:
1 | pytz.utc.localize(datetime.utcnow()).astimezone(tz) |
该代码将当前UTC时间转换为时区感知当前日期时间。
以下代码将当前UTC时间转换为时区感知日期时间,该日期时间不一定是当前的。时区仅附加到UTC时间值。
1 | tz.localize(datetime.utcnow()) |
这是
1 | tz.fromutc(utc_time) |
(
另一个很简单的方法:
因为
1 2 3 4 5 6 7 8 | from datetime import datetime import pytz utc_time = datetime.utcnow() tz = pytz.timezone('America/St_Johns') utc_time =utc_time.replace(tzinfo=pytz.UTC) #replace method st_john_time=utc_time.astimezone(tz) #astimezone method print(st_john_time) |
您也可以使用下面的示例,我将其用于类似的任务
1 2 3 | tz = pytz.timezone('America/St_Johns') time_difference=tz.utcoffset(utc_time).total_seconds() #time difference between UTC and local timezones in 5:30:00 format utc_time = date + timedelta(0,time_difference) |
它运行速度很快,您无需导入其他库。