Python时间戳在使用两位数年份时出错

3
我将读取一组类似以下示例的日期和数字数据文件:

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以不同的方式解释两位数年份?

2个回答

3

你必须在某个地方划定明确的界限。例如,如果您不接受未来的日期(即,“Jun-12”是2012年,“Aug-12”是1912年):

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

0

年份不是datetime.timedelta的有效参数(至少在Python 2.7中不是),因此您实际上需要使用:

dt = datetime.datetime(dt.years - 100, dt.month, dt.day, dt.hours, dt.minutes, dt.seconds)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接