Come tutti i programmatori Perl (si spera) di conoscere, il valore dell'anno da una chiamata alla funzione di Perl localtime
è relativo al 1900. Chiedendo perché questo è stato, ho preso uno sguardo al perldoc for localtime, e ho trovato questo interessante pepita:Perché il valore dell'anno nella funzione localtime di Perl (e C's tm struct) rispetto al 1900?
Tutti gli elementi della lista sono numerici e escono direttamente da C `struct tm '.
Guardando poi al C++ reference for the tm struct, ho trovato che la variabile tm_year
membro è dichiarato come int
.
Domanda: Perché, quindi, è il valore dell'anno relativo al 1900 e non semplicemente l'anno completo a quattro cifre? C'è qualche ragione storica? Mi sembra che, anche con i primi limiti di memoria in informatica, un intero sia (ovviamente) più che sufficiente per archiviare l'intero anno. Ci deve essere stata una buona ragione; Sono curioso di sapere cosa potrebbe essere.
Cronologia. Il bug Y2K non era evidente nei primi anni '70 quando lo standard di fatto era stato fissato. Dopodiché, era troppo tardi per cambiarlo senza rompere enormi quantità di codice. –