и посмотреть медиа
Code on a Napkin - Python coding
и посмотреть медиа
Channel about programming in Python and other languages. Simple explanations and codes.
Channel about programming in Python and other languages. Simple explanations and codes.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Resource for those interested in programming. Focus on Python, but covers other topics as well. Simple examples and breakdowns.
Знаете ли вы, что в UTC реально существует секунда `23:59:60` – и Python умеет ее парсить? Обычно в минуте 60 секунд: от 00 до 59. Но иногда у UTC появляется дополнительная секунда – 23:59:60. Это leap second, или високосная секунда. Эта секунда здесь потому, что Земля не вращается идеально ровно. Атомные часы идут стабильно, а вот длина суток чуть плавает. Чтобы UTC не уползало от астрономического времени UT1, в UTC иногда вставляют дополнительную секунду. И Python про leap second знает: from time import strptime t = strptime("2016-12-31 23:59:60", "%Y-%m-%d %H:%M:%S") print(t.tm_sec) # 60 strptime() спокойно принимает 60 в секундах, потому что стандарт времени это допускает. В POSIX tm_sec вообще определен как диапазон 0-60. Последняя leap second была 31 декабря 2016 года – конец суток тогда выглядел так: 23:59:58 23:59:59 23:59:60 00:00:00 То есть в той минуте прошла 61 секунда вместо обычных 60. Но вот что еще интересно: большинство Unix-систем никогда не покажут вам 23:59:60. Причина в POSIX time. Тип time_t хранит количество секунд с 1970 года – но leap seconds в этот счетчик не входят. Для POSIX-времени такой секунды просто не существует. import time print(time.time()) print(time.gmtime()) #1779213515.548919 #time.struct_time(tm_year=2026, tm_mon=5, tm_mday=19, tm_hour=17, tm_min=58, tm_sec=35, tm_wday=1, tm_yday=139, tm_isdst=0) Из-за этого time.time() никогда не вернет timestamp для 23:59:60, а gmtime() практически никогда не покажет tm_sec == 60, даже если leap second реально была. Операционные системы и NTP-серверы обходят эту проблему разными способами. Самый простой вариант – прямо вставить дополнительную секунду. Другой вариант – вставить лишнюю секунду не сразу, а заставить часы идти чуть медленнее или чуть быстрее в течение времени, чтобы избежать резкого скачка и одновременно сгладить разрыв. Google Leap Smear например распределяет эту секунду на 24 часа. Новых leap seconds не было с 2016 года. А в 2022 Генеральная конференция по мерам и весам (CGPM) официально решила отказаться от leap seconds к 2035 году – UTC перестанет корректироваться дополнительными секундами. А вот на замену пока ничего не утвердили, но как вариант предлагают раз в 100 лет делать leap minute. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!