LINUX.ORG.RU

Не все даты одинаково хороши (для GNU софта)

 , , ,


0

3

Думал, баг нашёл, но, похоже, опять опыт :-)

Причину, вроде, осознал и готов признать это фичей, а не багом. Но задачка изначально была из разряда со звёздочкой (recfix из состава recutils не валидировал файл, содержащий поле с датой 1984-04-01).

Кому интересно пораскинуть мозгами, вот простенький показательный и слишком очевидный пример, к которому всё свелось.

$ TZ=Europe/Moscow date -d "31 Mar 1984"
Сб. марта 31 00:00:00 MSK 1984
$ TZ=Europe/Moscow date -d "1 Apr 1984"
date: invalid date ‘1 Apr 1984’
$ TZ=Europe/Moscow date -d "2 Apr 1984"
Пн. апр.  2 00:00:00 MSD 1984

Вроде бы и логично всё, но если не сталкиваться с таким (а столкнуться статистически довольно сложно), можно отхватить.

Например, человек, родившийся в этот день, сообщает, что, вроде бы у него был случай, когда некий сайт, требующий указать дату рождения, никак не хотел принимать таковую.



Последнее исправление: unterwulf (всего исправлений: 1)

Жесткий прикол. В 1981-84 годах в СССР 1 апреля не было полночи, и после 31 марта 23:59 сразу следовал час ночи. Хорошая первоапрельская шутка.

German_1984 ★★
()
Последнее исправление: German_1984 (всего исправлений: 1)
Ответ на: комментарий от German_1984

Нда, при мне переводили время в три ночи вроде и в последнюю субботу марта/октября. Я вот ни фига не догадался.

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от Harald

А таймзоны не имеют дат начала действия?

Имеют, конечно. В России их где-то вскоре после Октябрьской революции ввели.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Собственно 1 июля 1919-го:

Zone Europe/Moscow	 2:30:17 -	LMT	1880
			 2:30:17 -	MMT	1916 Jul  3 # Moscow Mean Time
			 2:31:19 Russia	%s	1919 Jul  1  0:00u
			 3:00	Russia	%s	1921 Oct
			 3:00	Russia	MSK/MSD	1922 Oct
			 2:00	-	EET	1930 Jun 21
			 3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
			 2:00	Russia	EE%sT	1992 Jan 19  2:00s
			 3:00	Russia	MSK/MSD	2011 Mar 27  2:00s
			 4:00	-	MSK	2014 Oct 26  2:00s
			 3:00	-	MSK

Однако летнее время, оказывается, ввели раньше поясного.

Zmicier ★★★★★
()

я тебе другой фокус покажу, а ты думай и познавай:

TZ=Europe/Berlin date -d "1 Apr 1984" && TZ=Europe/London date -d "1 Apr 1984" && TZ=Europe/Berlin date && TZ=Europe/London date
Вс апр  1 00:00:00 CEST 1984
Вс апр  1 00:00:00 BST 1984
Пн ноя 27 21:52:37 CET 2017
Пн ноя 27 20:52:37 GMT 2017
давай, познавай дальше

novitchok ★★★★★
()
Ответ на: комментарий от novitchok

я тебе другой фокус покажу

Эмм... Факир был пьян и фокус не удался?

В чем он должен был заключаться?

Zmicier ★★★★★
()
Ответ на: комментарий от German_1984

хе-хе, хотя сам недавно напарывался.в результате перевода часов не было 3 ночи в одну из дат.
причем ошибку не гнутый, а оракловый обработчик дат возвращал, поэтому виноватыми объявили дба.

bl ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.