我想将字符串转换为datetime,字符串被解析为:
Metatime = datetime.datetime.strptime(metadata.get("FileModifyDate"), "%y:%m:%d %H:%M:%S")
其中metadata.get返回如下内容:
2012:11:19 14:53:44-05:00
我有另一个我要比较的数据时间元素,因此格式化应该是相同的。另一个datetime元素是这样的:
(datetime.datetime(2014, 3, 26, 23, 22, 21)
如何格式化以便能够进行逻辑比较?
答案 0 :(得分:0)
Python的标准datetime.strptime()方法不支持以hh:mm格式解析时区信息。对此有一个开放的feature request。
同时,您可以使用以下解决方法:
>>> FileModifyDate = '2012:11:19 14:53:44-05:00'
>>> datetime.strptime(FileModifyDate.replace(':', ''), '%Y%m%d %H%M%S%z')
datetime.datetime(2012, 11, 19, 14, 53, 44, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400)))
>>> print(_)
2012-11-19 14:53:44-05:00
请注意,您需要使用Python 3.3或更高版本才能实现此目的。
现在,如果要将结果与
进行比较>>> another_date = datetime(2014, 3, 26, 23, 22, 21)
您需要知道该日期的时区。如果是UTC格式,请执行
>>> file_date = datetime.strptime(FileModifyDate.replace(':', ''), '%Y%m%d %H%M%S%z')
>>> another_date.replace(tzinfo=timezone.utc) > file_date
True
如果它在某个其他区域,您需要使用第三方库(如pytz)将其转换为知觉实例,然后才能进行比较。