示例代碼
a = '27-10-80'
b = '27-10-22'
c = '27-10-50'
x = datetime.strptime(a, '%d-%m-%y')
print(x)
y = datetime.strptime(b, '%d-%m-%y')
print(y)
z = datetime.strptime(c, '%d-%m-%y')
print(z)
輸出:
1980-10-27 00:00:00
2022-10-27 00:00:00
2050-10-27 00:00:00
datetime 如何決定使用 '%y' 格式從字串生成的年份。為什么 80 變成 1980 而 50 變成 2050?
uj5u.com熱心網友回復:
Python 檔案表明strftime/strptime 遵循 C 的語意
該模塊中定義的大部分函式都呼叫同名的平臺 C 庫函式。
以及記錄以下行為%y:
當給定 %y 格式代碼時,函式 strptime() 可以決議 2 位數的年份。決議 2 位年份時,它們會根據 POSIX 和 ISO C 標準進行轉換:值 69-99 映射到 1969-1999,值 0-68 映射到 2000-2068。
但是我們可以通過查找STRPTIME(3)來確認這種行為,因為%y:
本世紀內的年份。如果沒有另外指定世紀,則 69-99 范圍內的值是指 20 世紀(1969 年至 1999 年)的年份;00-68 范圍內的值指的是 21 世紀的年份(包括 2000 年至 2068 年)。前導零是允許的,但不是必需的。
強調我的。
這個截止沒有明確的理由,但有理由認為它源于 1970 年的 UNIX EPOCH,邊界處有一年的安全裕度。
uj5u.com熱心網友回復:
這記錄在 的評論部分下_strptime.py。
if group_key == 'y':
year = int(found_dict['y'])
# Open Group specification for strptime() states that a %y
#value in the range of [00, 68] is in the century 2000, while
#[69,99] is in the century 1900
if year <= 68:
year = 2000
else:
year = 1900
uj5u.com熱心網友回復:
從時間的檔案
當給定 %y 格式代碼時,函式 strptime() 可以決議 2 位數的年份。決議 2 位年份時,它們會根據 POSIX 和 ISO C 標準進行轉換:值 69-99 映射到 1969-1999,值 0-68 映射到 2000-2068。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521355.html
標籤:Python约会时间
