簡體   English   中英

將給定時間從給定時區轉換為 UTC

[英]convert given time from a given timezone to UTC

我有兩個輸入時間 00:00 和時區“亞洲/加爾各答”

我想將其轉換為 UTC 時間,例如 '18.30'

我不想添加或減去偏移量,因為它可能會影響夏令時

我所做的是

 local = pytz.timezone ("UTC")
 nativetime = datetime.strptime (setTime,frmt)
 local_dt = local.localize(nativetime, is_dst=None)
 utc_dt = local_dt.astimezone(pytz.utc)

但這不會改變任何東西,時間不會轉換為 UTC

請幫忙

像這樣,假設你在 py3 上:

>>> import datetime
>>> import pytz
>>> tz = pytz.timezone('Asia/Kolkata')
>>> dt = datetime.datetime(2020, 8, 4, 0, 0, tzinfo=tz)
>>> dt.astimezone(pytz.utc)
datetime.datetime(2020, 8, 3, 18, 7, tzinfo=<UTC>)
>>>

由於您說您是 Python 的新手,因此跳過pytz可能會很好,因為 Python 3.9將棄用它。 您可以改用dateutil ,在 Python 3.9 中可以更輕松地用zoneinfo替換它。

from datetime import datetime, timezone
from dateutil.tz import gettz

# assuming you have something like
dt_naive = datetime.strptime('2020-08-05', '%Y-%m-%d')

# dt_naive has no time zone info, so set it:
dt_aware = dt_naive.replace(tzinfo=gettz('Asia/Kolkata'))

# now you can convert to another timezone using .astimezone:
dt_aware_utc = dt_aware.astimezone(timezone.utc)

# datetime.datetime(2020, 8, 4, 18, 30, tzinfo=datetime.timezone.utc)
# -> 5:30 hours behind, which matches dt_aware.utcoffset()

@thebjorn 給了我答案

這就是我所做的

def utc_to_local(utc_dt,local_tz):
    local_dt = utc_dt.replace(tzinfo=pytz.utc).astimezone(local_tz)
    return local_tz.normalize(local_dt)


setTime='00:00:00'
setZone='Asia/Kolkata'

datePart = str(datetime.utcnow()).split(' ')[0]
dateTimeUtcStr = datePart+' '+str(setTime)
tz = pytz.timezone('Asia/Kolkata')
tz_utc = pytz.timezone('UTC')
dateTimeRef = datetime.strptime(dateTimeUtcStr, '%Y-%m-%d %H:%M:%S')

#local to utc
tzUtc = pytz.timezone('UTC')
local_dt = tz.localize(dateTimeRef, is_dst=None)
utc_dt = local_dt.astimezone(pytz.utc)
print(utc_dt)

#utc to local
altTime = utc_to_local(utc_dt,tz)

print(altTime)

暫無
暫無

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

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