我有一个出生日期字段,例如: date = '07-JUL-50'
当我想得到这一年时,我得到了这个:
my_date = datetime.datetime.strptime(date, "%d-%b-%y")
>>> my_date.year
2050
有没有一种优雅的方式来获得“1950”?
谢谢
文档说:
当接受 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
希望有帮助。