-
Вдруг заинтересовался, поддерживает ли Питон високосные секунды. Оказывается, нет:
>>> from datetime import datetime, timedelta >>> datetime(2008, 12, 31, 23, 59, 59) + timedelta(seconds=1) datetime.datetime(2009, 1, 1, 0, 0)... а должно быть 2008-12-31 23:59:60.
Кто-нибудь как-нибудь обходил эту проблему? Никакой практической задачи у меня нет, просто интересно.
-
Действительно интересно :)
Как написано в документации к пакету Gentoo sys-libs/timezone-data: POSIX requires that systems ignore leap seconds, что сразу огорчает. Однако в Gentoo есть возможность включить високосные секунды указав зону right/Europe/Moscow:
$ TZ=right/Europe/Moscow python Python 2.6.4 (r264:75706, Dec 8 2009, 19:55:33) [GCC 4.3.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from datetime import datetime, timedelta >>> from time import ctime >>> make_timestamp = lambda x: int(x.strftime('%s')) >>> x = datetime(2006, 1, 1, 2, 59, 59) >>> x + timedelta(seconds=1) datetime.datetime(2006, 1, 1, 3, 0) >>> datetime.fromtimestamp(make_timestamp(x)) datetime.datetime(2006, 1, 1, 2, 59, 59) >>> datetime.fromtimestamp(make_timestamp(x)+1) datetime.datetime(2006, 1, 1, 2, 59, 59) >>> datetime.fromtimestamp(make_timestamp(x)+2) datetime.datetime(2006, 1, 1, 3, 0) >>> ctime(make_timestamp(x) + 1) 'Sun Jan 1 02:59:60 2006'Смотря на ограничение
0 <= second < 60в документации datetime возникает сомнение, что datetime умеет високосные секунды. -
Спасибо за исследование, про ctime я не знал.
А datetime действительно не умеет leap seconds, там в доке про это явно написано.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

