This question already has answers here:
2 digit years using strptime() is not able to parse birthdays very well
                                
                                    (3个答案)
                                
                        
                                6年前关闭。
            
                    
我有一个出生日期字段,例如:
    日期= '07 -JUL-50'

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

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


是否有一种优雅的方式获得“ 1950”?

谢谢

最佳答案

文档说:


  接受两位数的年份时,将根据
  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


希望能有所帮助。

关于python - 从字符串'07 -JUL-50'获取年份,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17613656/

10-11 03:38