我从2个不同的来源获得2个不同的strings
,我想将这些字符串转换为date-time format
中的常见UTC timezone
。
第一个字符串值如下所示:2017-03-30T13:54:40+0300
第二个字符串值如下:Thu Jul 6 16:57:50 2017 +0530
。
我是Python和Python 3.6的新手,如果有人可以帮助我,那将会很棒。
答案 0 :(得分:0)
我可以首先使用将字符串转换为日期时间格式(此处格式化很棘手)以及稍后使用datetime模块中的astimezone函数将这些日期时间转换为本地时区来解决问题。 谢谢大家的帮助。 @Rohit Poudel,链接共享帮助我更好地理解python中的日期时间。可以请检查这是否确实与上述链接重复,如果没有,请标记为不重复,因为我是新手。
答案 1 :(得分:0)
对于ISO8601格式字符串(您的第一个字符串),请执行以下操作:
安装以下模块(假定为Linux,并假定已安装pip):
$ pip install iso8601 pytz
然后在您的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>)
如果要使用ISO8601格式的结果,请执行以下操作:
>>> dt1a.astimezone(tz=pytz.utc).isoformat()
'2017-03-30T10:54:40.123456+00:00'
您可以看到在最后一行,时间是UTC时间10:54.40.123456,而原始时间是13:54:40.123456 + 03:00。
对于第二个字符串,将其转换为datetime.datetime的实例,然后按上述步骤进行操作。