По POSIX дата хранится как целое длиной 32 бита, означающее число секунд с началом отсчета "1970-01-01 00:00:00". Если интерпретировать это число как беззнаковое, то предел наступит в 2106-ом году, а для знакового - 2038-ом.
Формат даты и времени в MSDOS:
│ 1 1 1 1 1 1 Load word at DIR_ENTRY+16H into a
│╓5┬4┬3┬2┬1┬0┬9┬8╥7┬6┬5┬4┬3┬2┬1┬0╖ 16-bit register and perform mask
│║ hour │ minute │ sec/2 ║ and shift operations to extract
│╙─┴─┴─┴─┴─┴─┴─┴─╨─┴─┴─┴─┴─┴─┴─┴─╜ components of the file time.
│ ╚╦╝ ╚╦╝ ╚╦╝
│ ║ ║ ╚► 2-second increments (0-30 valid) (t & 001fH)
│ ║ ╚► minute (0-59 valid) ((t & 07e0H) >> 5)
│ ╚► hour (0-23 valid) ((t & 0f800H) >> 11)
│
│ 1 1 1 1 1 1
│╓5┬4┬3┬2┬1┬0┬9┬8╥7┬6┬5┬4┬3┬2┬1┬0╖
│║ year │ month │ day ║ Use word at DIR_ENTRY+18H. After 16-bit
│╙─┴─┴─┴─┴─┴─┴─┴─╨─┴─┴─┴─┴─┴─┴─┴─╜ masks and shifts, add 1980 (07bcH) to year.
│ ╚╦╝ ╚╦╝ ╚╦╝
│ ║ ║ ╚► day (0-31) (d & 001fH)
│ ║ ╚► month (1-12 valid) ((d & 01e0H) >> 5)
│ ╚► year (0-119 valid) ((d & f800H) >> 9)
Отсчет идет от "1980-01-01 00:00:00". Предел - 2099 год.