Python Epoch Fail с 2-значным годом

Я читаю набор файлов данных с датами и числами, как в следующем примере:

Jan-61  25.3
Feb-61  23.5
Mar-61  37.9
Apr-61  40.6

Я читаю даты, используя

datetime.datetime.strptime(dateVariable, "%b-%y")

Наличие двузначного года вызывает проблему, поскольку числа меньше 70 (т.е. год эпохи) интерпретируются как относящиеся к 2000-м годам, а не к 1900-м годам.

Было бы очень сложно отредактировать все файлы и изменить формат даты. Есть ли способ указать datetime по-разному интерпретировать двузначные годы?


person thornate    schedule 13.07.2012    source источник


Ответы (2)


Вам нужно где-то провести толстую линию. Например, если вы не принимаете даты в будущем (например, 12 июня - 2012, а 12 августа - 1912 год):

dt = datetime.datetime.strptime(dateVariable, "%b-%y")
if dt > datetime.now():
    dt = dt - datetime.timedelta(years=100)
person eumiro    schedule 13.07.2012

Years не является допустимым параметром для datetime.timedelta (по крайней мере, не в Python 2.7), поэтому вам действительно нужно использовать:

dt = datetime.datetime(dt.years - 100, dt.month, dt.day, dt.hours, dt.minutes, dt.seconds)
person ChrisIPowell    schedule 09.01.2013