2

我有一个出生日期字段,例如: date = '07-JUL-50'

当我想得到这一年时,我得到了这个:

my_date = datetime.datetime.strptime(date, "%d-%b-%y")
>>> my_date.year
2050

有没有一种优雅的方式来获得“1950”?

谢谢

4

1 回答 1

3

文档说:

当接受 2 位数年份时,它们会根据 POSIX 或 X/Open 标准进行转换:值 69-99 映射到 1969-1999,值 0-68 映射到 2000-2068。

这就是为什么你会看到 2050 年。

如果您愿意1950,这取决于您的特定场景中允许的日期。例如,如果日期值只能是过去的日期,您可以执行以下操作:

import datetime


def get_year(date):
    my_date = datetime.datetime.strptime(date, "%d-%b-%y")
    now = datetime.datetime.now()

    if my_date > now:
        my_date = my_date.replace(year=my_date.year - 100)
    return my_date.year


print get_year('07-JUL-50')  # prints 1950
print get_year('07-JUL-13')  # prints 2013
print get_year('07-JUL-14')  # prints 1914

希望有帮助。

于 2013-07-12T11:23:44.687 回答