Python 将给定时间从给定时区转换为UTC
我有两个输入时间00:00和时区“亚洲/加尔各答” 我想将其转换为UTC时间,如“18.30” 我不想添加或减去偏移,因为它可能会影响日光节约 我所做的是Python 将给定时间从给定时区转换为UTC,python,timezone,pytz,Python,Timezone,Pytz,我有两个输入时间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(py
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>)
>>>
导入日期时间
>>>进口皮茨
>>>tz=pytz.时区(“亚洲/加尔各答”)
>>>dt=datetime.datetime(2020,8,4,0,0,tzinfo=tz)
>>>dt.astimezone(pytz.utc)
datetime.datetime(2020,8,3,18,7,tzinfo=)
>>>
假设您使用的是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>)
>>>
导入日期时间
>>>进口皮茨
>>>tz=pytz.时区(“亚洲/加尔各答”)
>>>dt=datetime.datetime(2020,8,4,0,0,tzinfo=tz)
>>>dt.astimezone(pytz.utc)
datetime.datetime(2020,8,3,18,7,tzinfo=)
>>>
既然您说自己是Python新手,那么最好跳过
pytz
,因为它是Python 3.9版的。您可以改为使用,这在Python 3.9中更容易被替换
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()
既然您说自己是Python新手,那么最好跳过pytz,因为它是使用Python 3.9的。您可以改为使用,这在Python 3.9中更容易被替换
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()
@他们给了我答案 这就是我所做的
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)
@他们给了我答案 这就是我所做的
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)
当然,时间没有转换,您正在转换到/来自同一时区!将pytz时区设置为本地时区,您当前正在将其存储为UTC时间的00:00,并转换为UTC时间。伙计们,我是python新手,我可以获取有关如何执行此操作的参考代码吗?当然时间不会转换,您正在转换为/来自同一时区!将pytz时区设置为本地时区,您当前将其存储为UTC时间的00:00,并转换为UTC时间。伙计们,我是python新手,我可以获得有关如何执行此操作的参考代码吗?