+ "content": "### Заблуждение 2. Високосные секунды больше не важны. История не играет роли\n\nВисокосные секунды когда-то отменят в будущем, но они точно останутся в прошлом. Это значит, что их всегда придётся учитывать в любых расчётах. Именно поэтому, кстати, время Unix — это число секунд с 1 января 1970 года, но с поправкой на високосные секунды.\n\nВообще, исторических казусов предостаточно.\n\nПользователь системы с часовым поясом `Asia/Shanghai` однажды [пожаловался](http://stackoverflow.com/questions/6841333) на следующий код на Java:\n\n```java\npublic static void main(String[] args) throws ParseException {\n SimpleDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\"); \n String str3 = \"1927-12-31 23:54:07\"; \n String str4 = \"1927-12-31 23:54:08\"; \n Date sDt3 = sf.parse(str3); \n Date sDt4 = sf.parse(str4); \n long ld3 = sDt3.getTime() / 1000; \n long ld4 = sDt4.getTime() / 1000;\n System.out.println(ld4 - ld3);\n}\n```\n\nКажется, что между 23:54:07 31 декабря 1927 года и 23:54:08 того же дня секунда разницы. В реальности программа показывала 6 минут: в TZDB версии 2013a выводится 358 секунд, в 2014f — 344 секунды.\n\nПроисходит так, потому что 1927 год для Шанхая был богат на события. Город попал под контроль Национального правительства Китайской Республики, которое 12 апреля запретило коммунистическую партию и [устроило резню](https://ru.wikipedia.org/wiki/Шанхайская_резня_1927_года). Шанхай объявили частью Китайской Республики и поменяли часовой пояс на GMT+8 вместо особого местного, чтобы показать единство Китая. В полночь с 31 декабря 1927 года по 1 января 1928 года стрелки часов перевели на 5 минут 52 секунды назад.\n\nПонятно, что почти всегда в сутках ровно 24 часа. Но возможны неожиданности любого размера: от целого числа часов до произвольного числа секунд и минут."
0 commit comments