Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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中识别和转换时区_Python_Date_Datetime_Python 3.x_Python Dateutil - Fatal编程技术网

在Python中识别和转换时区

在Python中识别和转换时区,python,date,datetime,python-3.x,python-dateutil,Python,Date,Datetime,Python 3.x,Python Dateutil,在我的文件中,我有ISO 8061格式的日期列和时区信息,下面是示例输入 0001-01-01T00:00:00-05:00 2009-01-29T07:00:00-05:00 2009-01-29T13:00:00-05:00 2009-01-29T18:55:00-05:00 2010-01-22T12:00:00-05:00 2010-07-20T00:25:00-04:00 2010-08-14T00:30:00-04:00 2011-06-19T08:25:00.41683-04:00

在我的文件中,我有ISO 8061格式的日期列和时区信息,下面是示例输入

0001-01-01T00:00:00-05:00
2009-01-29T07:00:00-05:00
2009-01-29T13:00:00-05:00
2009-01-29T18:55:00-05:00
2010-01-22T12:00:00-05:00
2010-07-20T00:25:00-04:00
2010-08-14T00:30:00-04:00
2011-06-19T08:25:00.41683-04:00
所以格式是YYYY-MM-DDTHH:MM:SS[f]-AB:CD

我想知道如何将给定数据格式化为RFC 2445 iCalendar规范[DTSTART]要求的格式,例如:

19970714T133000                    ;Local time
19970714T173000Z                   ;UTC time
TZID=US-Eastern:19970714T133000    ;Local time and time
我目前有以下代码用于解析

>>> import dateutil.parser
>>> import dateutil
>>> import datetime
>>> dateutil.parser.parse('2009-01-29T07:00:00-05:00')
datetime.datetime(2009, 1, 29, 7, 0, tzinfo=tzoffset(None, -18000))
我想知道如何识别时区['-04:00','-05:00'],以及如何将它们转换为UTC


多谢各位

我有点困惑。dateutil已经为您解析了时区信息。tzinfo=tzoffset(无,-18000)。一小时有3600秒-5点是-18000s@Leonardo.Z所以如果我只是从原始日期时间减去5小时,我会得到UTC日期时间?不,你不应该手动减去
dt=dateutil.parser.parse('2009-01-29T07:00:00-05:00')
,datatime对象有一个方法来进行时区转换:
dt.astimezone(pytz.utc)
@Leonardo.Z谢谢Leo:)希望你有一个轻松的一天:)Leonardo是对的。此外,您还需要5小时才能返回UTC。偏移表示时间比UTC晚5小时。还要认识到,仅仅因为你有-5或-4并不意味着你可以知道这是美国东部时间。