Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将给定时间从给定时区转换为UTC_Python_Timezone_Pytz - Fatal编程技术网

Python 将给定时间从给定时区转换为UTC

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

我有两个输入时间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>)
>>>
导入日期时间 >>>进口皮茨 >>>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新手,我可以获得有关如何执行此操作的参考代码吗?