在python中获取给定日期和UTC偏移量的GMT时间

在python中获取给定日期和UTC偏移量的GMT时间,python,datetime,utc,gmt,Python,Datetime,Utc,Gmt,我有一个日期字符串,格式如下“%Y%m%d%H%m%S”例如“19981024103115” 以及UTC本地偏移量的另一个字符串,例如“+0100” python中将其转换为GMT时间的最佳方式是什么 因此,结果将是1998-10-2409:31:15 >>> from dateutil.parser import parse >>> dt = parse('19981024103115+0100') >>> dt datetime.date

我有一个日期字符串,格式如下
“%Y%m%d%H%m%S”
例如
“19981024103115”
以及UTC本地偏移量的另一个字符串,例如
“+0100”

python中将其转换为GMT时间的最佳方式是什么

因此,结果将是1998-10-2409:31:15

>>> from dateutil.parser import parse
>>> dt = parse('19981024103115+0100')
>>> dt
datetime.datetime(1998, 10, 24, 10, 31, 15, tzinfo=tzoffset(None, 3600))
>>> dt.utctimetuple()
time.struct_time(tm_year=1998, tm_mon=10, tm_mday=24, tm_hour=9, tm_min=31, tm_sec=15, tm_wday=5, tm_yday=297, tm_isdst=0)

只要您知道时间偏移始终是4位数的形式,这应该是可行的

def MakeTime(date_string, offset_string):
    offset_hours = int(offset_string[0:3])
    offset_minutes = int(offset_string[0] + offset_string[3:5])
    gmt_adjust = datetime.timedelta(hours = offset_hours, minutes = offset_minutes)
    gmt_time = datetime.datetime.strptime(date_string, '%Y%m%d%H%M%S') - gmt_adjust
    return gmt_time

+谢谢你给了我更好的答案<代码>时间。strftime(“%Y-%m-%d%H:%m:%S”,t)将给出所需的输出。事实证明,对于“+0100”这样的时区,使用
time.strtime()
进行解析对%Z的效果不是很好。@bstperre,我一直不明白为什么
datetime
没有更好地支持时区。这似乎是一个非常重要的要求。@Mark Ransom-我说的是时间,但我同意你的意见。正确处理时区并不容易。@bstpiere,我说的是
datetime
作为一个模块而不是一个类,所以我的评论也包括了
time
。非常感谢你的回答,我花了将近30分钟的时间来解决这个问题。@adw,很好的一点,当偏移量为负数且分钟数为非零时,出现了一个错误,例如,“-0130”。修正了,不,没有修正。例如,将
offset=-100
offset=-101
@adw进行比较,再次感谢,我太草率了。这次我尝试了一种不同的方法,我认为它最终是对的。