簡體   English   中英

pytz - 將 UTC 和時區轉換為本地時間

[英]pytz - Converting UTC and timezone to local time

我在 utc 時區有一個datetime時間,例如:

utc_time = datetime.datetime.utcnow()

還有一個 pytz 時區 object:

tz = timezone('America/St_Johns')

utc_time轉換為給定時區的正確方法是什么?

我想我明白了:

pytz.utc.localize(utc_time, is_dst=None).astimezone(tz)

該行首先將天真(不知道時區) utc_time datetime對象轉換為包含時區(UTC)的datetime對象。 然后它使用astimezone函數根據請求的時區調整時間。

我可以建議使用箭頭嗎? 如果我理解這個問題:

>>> 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]>

你也可以使用

tz.fromutc(utc_time)

這是fromutc功能的確切目的:

tz.fromutc(utc_time)

astimezone函數調用fromutc ,但首先嘗試轉換為UTC,在您的情況下不需要)

我同意Tzach的回答。 只是想包括不需要is_dst參數:

pytz.utc.localize(datetime.utcnow()).astimezone(tz)

該代碼將當前UTC時間轉換為時區感知當前日期時間。

以下代碼將當前UTC時間轉換為時區感知日期時間,該日期時間不一定是當前的。 時區僅附加到UTC時間值。

tz.localize(datetime.utcnow())

另一個很簡單的方法:

因為utcnow方法返回一個天真的對象,所以你必須將天真的對象轉換為知覺對象。 使用replace方法,您可以將一個天真的對象轉換為知覺對象。 然后,您可以使用astimezone方法在不同的時區中創建新的datetime對象。

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)

您也可以使用下面的示例,我將其用於類似的任務

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)

它運行速度很快,您無需導入其他庫。

import datetime
import pytz

local_naive = datetime.datetime.now()
utc_aware = local_naive.astimezone(pytz.utc)

any_timezone = pytz.timezone('Asia/Kolkata')
local_aware = utc_aware.replace(tzinfo=pytz.utc).astimezone(any_timezone)

print(local_naive.time())
print(utc_aware.time())
print(local_aware.time())

回復:

15:05:34.449438
09:35:34.449438
15:05:34.449438

要獲取時區信息,請嘗試:

print(local_vaive)
print(utc_aware)
print(local_aware)

回復:

2021-11-15 15:17:24.183199
2021-11-15 09:47:24.183199+00:00
2021-11-15 15:17:24.183199+05:30

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM