[英]Python Django convert timestamp from UTC to local timezone
我正在使用 Django + DRF 開發 REST API。 我已將 django 設置配置為使用時區支持:
USE_I18N = True
USE_L10N = True
USE_TZ = True
如前所述,我的數據庫以 UTC 格式接收和存儲數據。 我的問題是,對於某些用戶(每個用戶都有他們的配置),我必須在他們的時區(通常在 UTC-3 或 UTC-2)中返回響應。 我正在閱讀幾篇文章並嘗試了幾種組合: astimezone
和normalize
沒有成功。 我附上我的嘗試:
timezone_arg = pytz.timezone('America/Buenos_Aires')
print(ts_a, ts_b)
ts_a = ts_a.astimezone(timezone_arg)
ts_b = ts_b.astimezone(timezone_arg)
print(ts_a, ts_b)
utc = pytz.timezone('UTC')
ts_a = timezone_arg.normalize(ts_a.astimezone(utc))
ts_b = timezone_arg.normalize(ts_b.astimezone(utc))
print(ts_a, ts_b)
我得到以下信息:
2022-06-17 05:39:09 2022-06-17 05:46:49
2022-06-17 05:39:09-03:00 2022-06-17 05:46:49-03:00
2022-06-17 05:39:09-03:00 2022-06-17 05:46:49-03:00
我知道 django 正在解釋我所說的是時間戳已經在 UTC-3 中......並且它正在將它們標准化為 UTC。 但我想要的是從 UTC 轉換為 UTC-3。 我的輸入/輸出應該是:
2022-06-17 05:39:09 2022-06-17 05:46:49
2022-06-17 02:39:09 2022-06-17 02:46:49
由於我不僅使用阿根廷的時區 (UTC-3),我無法計算 3 小時的時間增量。其他客戶的差異可能會有所不同。 我的最后一個資源是在標准化時間戳的末尾使用 -03:00:00 並進行減法。 但是我想知道有沒有更直接更正確的方式。這些時間戳是直接發給用戶的,一定要便於閱讀。
它會是這樣的:
from datetime import datetime
from dateutil import tz
from_zone = tz.tzutc()
to_zone = tz.tzlocal()
utc = datetime.strptime('2022-06-17 05:39:09', '%Y-%m-%d %H:%M:%S')
utc = utc.replace(tzinfo=from_zone)
# Convert to local time zone
to_local_time = utc.astimezone(to_zone)
print(utc,to_local_time)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.