Те, кто связан с високосным годом и Бугом

К 2020 году, и я желаю вам всем счастливого Нового года!

2020 високосный год (Leap Year), високосный год будет неудачным. Восемь лет назад, 29 февраля 2012, я был в лазури , когда мы вышли на большую ошибку:
https://azure.microsoft.com/en-us/blog/summary-of-windows-azure-service- разрушение-на-февраль-29th- 2012 /

Общие заблуждения

1, 365 дней в году всегда
2, всегда 28 дней февраля
3, високосный год каждые четыре года

На самом деле, не високосный год каждые четыре года. 2000 год является високосным, но 1900 и 2100 не являются високосными.

Где подвержен високосный связанный Буг

1, в время значения даты коды плюс или минус. В частности , плюс или минус один месяц или один год код
2, в соответствии с различными результатами запросов к базам данных , генерируемые отчеты и иконки, ежемесячные и ежегодные статистические данные могут рассчитывать менее один день
3, сертификат / пароль / ключа / кэширование времени истечения срока действия Это может быть день раньше , чем ожидалось, или может создать нелегальную время истечения
4, массив фиксированной длины. Например, массив длиной 365 может испытать високосный год не хватает, мощи границ массива.
5, компоненты пользовательского интерфейса, такие как календарь, компонент выбора даты, а также ввод клиентского код четности , связанный.

Какой день високосного года, чтобы обратить особое внимание

31 декабря 2019: Это последний день високосного года предыдущего года. 2019 плюс 365 дней в последний день, а не в последний день 2020 года, в то время как 2020 будет предпоследний день (т.е. 30 декабря 2020).

2020 1 января: в первый день високосного года. В первый год високосный дней плюс 365 дней, а не в следующем году 1 января, но в этом году 31 декабря.

31 января 2020: На следующий день плюс 28 дней, а не в следующем месяце (февраль) в последний день.
1 февраля 2020: На следующий день плюс 28 дней, в первый день следующего месяца нет (в марте) есть.
2020 28 февраля: Это день до 29 февраля. Код в вопрос может быть неправильно в этот день , как в последний день февраля, пытаясь добавить один день , чтобы получить 1 марта. Но на самом деле в этот день плюс один день 29 февраля.
2020 29 февраля: Это дополнительный високосный день. Если код , который всегда только 28 дней в феврале, код , который может возникнуть различные проблемы, такие как:

В контрольной проверке будет считаться законным входом (2020/2/29) является незаконным, { year+1 , month , day }способом складывать и вычитать 1 год, то он будет генерировать недопустимую дату.

2020, 1 марта: 29 февраля за день. Код, если сокращение 1 марта в течение 28 дней будет 2 февраля (вместо 1 мая, как ожидается, в феврале), минус 365 дней, то будет 2 марта 2019 (вместо ожидаемого в марте 1).

366 дней в году: 2020 декабря 31.

Если код не правильно обрабатывать первые 366 дней в году, а также может вызвать проблемы. Например, 31 декабря 2008, выпуск третьего стороннего программного обеспечения привело Microsoft Zune устройство не может использовать все данные ссылки:
http://www.theguardian.com/technology/blog/2009/jan/01/zune-firmware -mistake

Если код всегда предполагается, что в год составляет 365 дней, мы объявляем массив 365 фиксированного размера, границы массива, которые могут возникнуть в течение первых 366 дней в году.

Массивы граница, когда это происходит в коде, написанном на языке C / C ++, может привести к переполнению памяти уязвимостям.

Прыжок секунд

В дополнение к високосный год, есть то , что называется високосные секунды, детали Ссылка:
https://en.wikipedia.org/wiki/Leap_second

Однако, поскольку код на уровне приложений являются Alibaba экономики, большинство студентов обычно ладит, солнце и луна находится в процессе, большинство из них будет штраф в час и минуту, високосные секунды воздействия на нашей относительно гораздо меньше. Для некоторых требований больше високосного второе времени точности относительно высоко будет влиять на системы GPS.

Автор:
Чжэн Цзыин, South Gate прозвище, теперь работают муравьи золото платье, старший директор международного качества бизнес - группа и технические риски отдела. Мастер компьютерного департамента Шанхайского университета присоединился к Microsoft после окончания в 2018 году присоединился к Муравьям золото платья. Занимается разработкой программного обеспечения в течение 18 лет, основное внимание в работе вращается вокруг тестирования, качества и технических характеристик. В настоящее время наша команды больше отечественные и зарубежные работы по развитию теста набора, специалисты в стране и за рубежом, может присоединиться к нам Подробности работы:

https://hire.alibaba-inc.com/i18n/positionDetail.html?positionId=576717

рекомендация

отyq.aliyun.com/articles/742802