操纵datetime Python

时间:2014-03-29 19:28:11

标签: python datetime strptime

我想将字符串转换为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)

如何格式化以便能够进行逻辑比较?

1 个答案:

答案 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)将其转换为知觉实例,然后才能进行比较。