[identity profile] sopla.livejournal.com posting in [community profile] useless_faq
почему windows ограничивает временые рамки в часах(1980-2099)?

Date: 2006-06-22 07:31 pm (UTC)
From: [identity profile] f2065.livejournal.com
Есть техническое объяснение. Какой-то из внутренних форматов времени (причём не винды, а толи в юниксе, толи в досе) считает время в секундах от примерно 79г. Указатель DWORD. Итого, меньше 80 быть не может т.к. отрицательные значения не заложены, а больше 2099 - потому что там вскоре 2^16сек от 1980г как раз истекают.

Но это для внешней совместимости (сама винда не оперирует этим форматом) видимо и для упрощения работы пользователей (чтобы опечатку не допустили в первых двух цифрах года ;) К тому времени нынешняя винда явно будет не нужна (даже коллекционерам - т.к. запустить будет негде - любая нынешняя платформа просто сдохнет к тому времени). А на уровне WinAPI допустим год до 32768 (см. MSDN Library - описание функция времени).

Date: 2006-06-22 08:54 pm (UTC)
From: [identity profile] f2065.livejournal.com
2056 ничем не примечателен.

Вот в 2038 будут проблемы с некоторыми юниксовыми прогами (стандарта POSIX). Там время хранится в DWORD signed-int (т.е. 15-бит фактически) в секундах от примерно 80г. Ну и, 19 января 2038, время кончится ;)

Date: 2006-06-22 09:00 pm (UTC)
From: [identity profile] langsamer.livejournal.com
32 bit: http://en.wikipedia.org/wiki/Unix_time#32-bit_overflow

Date: 2006-06-22 08:57 pm (UTC)
From: [identity profile] langsamer.livejournal.com
Юникс считает время от своего "создания" - 1 января 1970 г. И вот когда счетчик переполнится, и будет та самая "проблема 2038", о которой упомянули выше.
Что касается Винды - по-моему, все просто: она требует, чтобы ей сказали, как ей воспринимать даты типа 01.01.12 - как 1912 или 2012..