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

Date: 2006-06-22 07:07 pm (UTC)
From: [identity profile] mivlad.livejournal.com
И что, с установкой позже 2038 года всё нормально работает?

Re: Reply to your comment...

Date: 2006-06-22 07:26 pm (UTC)
From: [identity profile] mivlad.livejournal.com
Ну, работать-то оно действительно без особых проблем должно, но некоторые программы наверняка неверную дату будут показывать. Ибо Проблема 2038 дамоклово висит над человечеством.

А в Windows пределы поставлены, потому что должны же они где-то быть.

Re: Reply to your comment...

Date: 2006-06-22 09:12 pm (UTC)
From: [identity profile] f2065.livejournal.com
в винде вобщем-то проблемы 2038 не будет ;)
она везде оперирует либо int64 с 0.1мсек от 1601 года (FILETIME),
либо явным указанием года-месяца-дня-часа-мин-сек-мсек (SYSTEMTIME)

кстати, у MSDOS будут проблемы в 2107году. Там год хранится в 7 битах, смещение от 1980г. И в MSDN предупреждают: The MS-DOS date format can represent only dates between 1/1/1980 and 12/31/2107.

Re: Reply to your comment...

Date: 2006-06-22 09:21 pm (UTC)
From: [identity profile] mivlad.livejournal.com
И весь софт под Windows пользуется описанным представлением дат?

Re: Reply to your comment...

Date: 2006-06-22 09:38 pm (UTC)
From: [identity profile] f2065.livejournal.com
FILETIME и SYSTEMTIME ? Практически весь. Ибо это заявлено в MSDN, и оно выдаётся/принимается WinAPI. Какой-то другой формат может быть только внутри самой проги для её внутренних нужд.

MSDOS-формат используется только в ДОСовых прогах (не путать с консольными), однако к тому времени MSDOS из винды наверняка выкинут.

Date: 2006-06-22 07:11 pm (UTC)
From: [identity profile] gvadelupa.livejournal.com
Это хитрый маркетинговый ход, чтобы после 2099 года пришлось покупать новую версию.

Date: 2006-06-22 07:23 pm (UTC)
From: [identity profile] ryb.livejournal.com
или он освоит тебя ;)

Date: 2006-06-22 07:30 pm (UTC)
From: [identity profile] ryb.livejournal.com
сам такое слово!

Date: 2006-06-23 08:47 am (UTC)

Date: 2006-06-22 07:25 pm (UTC)
From: [identity profile] tankmaster.livejournal.com
а что будет если поставить часы на 31 декабря 2099 года 23:59 и подождать минуту? :) компьютер взорвёццо?

Date: 2006-06-22 07:31 pm (UTC)
From: [identity profile] diver.livejournal.com
напиши о результатах!

Date: 2006-06-22 08:28 pm (UTC)
From: [identity profile] ninja-sl.livejournal.com
А в ответ тишина :)

Date: 2006-06-22 08:30 pm (UTC)
From: [identity profile] ex-0xb4dc0d.livejournal.com
взорвался, видимо

Date: 2006-06-22 08:33 pm (UTC)
From: [identity profile] diver.livejournal.com
дак что случилось-то? сами боимся проверять.

Re: аминь

Date: 2006-06-22 08:36 pm (UTC)
From: [identity profile] diver.livejournal.com
а заскриншотить? 8-О

Re: аминь

Date: 2006-06-22 08:43 pm (UTC)
From: [identity profile] diver.livejournal.com
а если безвозмездно?

Re: аминь

Date: 2006-06-22 08:48 pm (UTC)
From: [identity profile] diver.livejournal.com
эхх.. так и умру, не увидев..

Date: 2006-06-22 09:07 pm (UTC)
From: [identity profile] tazepama.livejournal.com
да нихрена. перешел на 2100 и все.

Re: аминь

Date: 2006-06-22 09:10 pm (UTC)
From: [identity profile] diver.livejournal.com
вот так рушатся мечты. спасибо =)

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..

Date: 2006-06-22 08:37 pm (UTC)
From: [identity profile] krykry.livejournal.com
А они ограничивают?... Впочем, к 2099 году, полагаю, вам будет на это глубоко наплевать...

Date: 2006-06-22 10:38 pm (UTC)
From: [identity profile] ex-jn1.livejournal.com
+5!!!!))))

Date: 2006-06-23 01:31 am (UTC)
From: [identity profile] leon-deleche.livejournal.com
к 2099-му, Виндуз исчезнет как продукт. Токо может историки или антиквары будут запускать.

Date: 2006-06-23 06:03 am (UTC)
From: [identity profile] geesy.livejournal.com
Но мы этого уже не увидим :)

Date: 2006-06-23 07:36 am (UTC)
From: [identity profile] leon-deleche.livejournal.com
кто знает, кто знает...