Python DateTime问题

时间:2012-01-25 00:48:21

标签: python datetime

所有

我遇到过将错误日期作为字符串返回的API。例如,有时候我会遇到一条记录,它会返回' 0056-00-00 00:00:00'这在我的应用程序中不起作用。我可以轻松地将字符串转换为日期时间对象但是如何评估同一个对象以判断日期和月份是否都是00?这是我到目前为止所拥有的。

try:
    date_taken = None
    if x.has_key('datetaken'):
        date_taken = x['datetaken']
        gooddate = dateutil.parser.parse(date_taken)
    if gooddate < datetime.datetime(1960, 01, 01, 00, 00, 00):
        fixdate = str(gooddate)   
except Exception as err:
    logger.error('datetaken: %s', err)

我想将错误的日期时间对象转换为1960年1月1日。

亚当

2 个答案:

答案 0 :(得分:2)

尝试解析它并捕获异常:

from datetime import datetime

string = '1856-00-00 00:00:00'

try:
    date = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')
except ValueError:
    date = datetime(1960, 1, 1, 0, 0, 0)

print(date)

答案 1 :(得分:0)

>>> import datetime, dateutil, dateutil.parser
>>> mindate = datetime.datetime(1960, 01, 01, 00, 00, 00)
>>> gooddate = None
>>> try:
...  gooddate = dateutil.parser.parse('1856-00-00 00:00:00')
... except ValueError:
...  pass
... except Exception as err:
...  raise err
... 
>>> if gooddate is None or gooddate < mindate:
...  gooddate = mindate
... 
>>> gooddate
datetime.datetime(1960, 1, 1, 0, 0)