python 3.6将字符串转换为utc时区日期时间格式

python 3.6将字符串转换为utc时区日期时间格式,python,python-3.x,datetime,Python,Python 3.x,Datetime,我从两个不同的来源获得了两个不同的字符串,我想将这些字符串转换为UTC时区中的通用日期-时间格式。 第一个字符串值如下:2017-03-30T13:54:40+0300 第二个字符串值如下:Thu Jul 6 16:57:50 2017+0530。 我不熟悉Python和Python 3.6,如果有人能帮助我,那就太好了。我可以先通过将字符串转换为datetime格式(这里的格式很复杂)来解决这个问题,然后使用datetime模块中的astimezone函数将这些datetime转换为本地时区。

我从两个不同的来源获得了两个不同的
字符串
,我想将这些字符串转换为
UTC时区
中的通用
日期-时间格式
。 第一个字符串值如下:
2017-03-30T13:54:40+0300
第二个字符串值如下:
Thu Jul 6 16:57:50 2017+0530

我不熟悉Python和Python 3.6,如果有人能帮助我,那就太好了。

我可以先通过将字符串转换为datetime格式(这里的格式很复杂)来解决这个问题,然后使用datetime模块中的astimezone函数将这些datetime转换为本地时区。 谢谢大家的帮助。
@Rohit Poudel,共享的链接帮助我更好地理解python中的日期时间。请检查这是否确实是所述链接的副本,如果不是,请标记为不重复,因为我是新手。

对于ISO8601格式字符串(您的第一个字符串),请执行以下操作:

安装这些模块(假定为Linux,并假定已安装pip):

然后在Python控制台中:

>>> import datetime, iso8601, pytz
>>> s1 = '2017-03-30T13:54:40+03:00'
>>> s1a = '2017-03-30T13:54:40.123456+03:00'    # with fraction of sec. added
>>> dt1 = iso8601.parse_date(s1)
>>> dt1
datetime.datetime(2017, 3, 30, 13, 54, 40, tzinfo=datetime.timezone(datetime.timedelta(seconds=10800), '+03:00'))
>>> dt1a = iso8601.parse_date(s1a)
>>> dt1a
datetime.datetime(2017, 3, 30, 13, 54, 40, 123456, tzinfo=datetime.timezone(datetime.timedelta(seconds=10800), '+03:00'))
dt1和dt1a是datetime.datetime的实例。它们是带有+03:00时区偏移的“感知”时间

现在将其转换为UTC时间:

>>> dt1a.astimezone(tz=pytz.utc)
datetime.datetime(2017, 3, 30, 10, 54, 40, 123456, tzinfo=<UTC>)
您可以看到,在最后一行中,时间是10:54.40.123456 UTC,而原始时间是13:54:40.123456+03:00


对于第二个字符串,请将其转换为datetime.datetime的实例,然后按上述步骤进行操作。

可能重复的@Cosnepenguin:我已扫描了您提到的问题和答案,但看不出这是如何重复的。或者,在不需要pytz的情况下,执行此操作:>>dt1a.astimezone(tz=datetime.timezone.utc)
>>> dt1a.astimezone(tz=pytz.utc)
datetime.datetime(2017, 3, 30, 10, 54, 40, 123456, tzinfo=<UTC>)
>>> dt1a.astimezone(tz=pytz.utc).isoformat()
'2017-03-30T10:54:40.123456+00:00'