При расчете количества секунд между двумя последовательными днями должно быть 86400 секунд (24 * 60 * 60).
Но два раза в год это не так ...
Один раз в день 23 часа, а через 6 месяцев - 25 часов.
Почему это происходит?
Я запустил код для проверки количества секунд между 2 днями с 2005 по 2019 год.
и весь год там ровно 24 часа, кроме 2-х дней, где есть 23 и 25.
Почему это происходит?
Вот краткое изложение моих результатов -
Столбец разницы - это количество секунд между этим днем и предыдущим до 86400 секунд
+------------+------------+-------------------+
| dates | difference | number_of_seconds |
+------------+------------+-------------------+
| 2005-04-02 | 3600 | 82800 |
| 2005-10-10 | -3600 | 90000 |
| 2006-04-01 | 3600 | 82800 |
| 2006-10-02 | -3600 | 90000 |
| 2007-03-31 | 3600 | 82800 |
| 2007-09-17 | -3600 | 90000 |
| 2008-03-29 | 3600 | 82800 |
| 2008-10-06 | -3600 | 90000 |
| 2009-03-28 | 3600 | 82800 |
| 2009-09-28 | -3600 | 90000 |
| 2010-03-27 | 3600 | 82800 |
| 2010-09-13 | -3600 | 90000 |
| 2011-04-02 | 3600 | 82800 |
| 2011-10-03 | -3600 | 90000 |
| 2012-03-31 | 3600 | 82800 |
| 2012-09-24 | -3600 | 90000 |
| 2013-03-30 | 3600 | 82800 |
| 2013-10-28 | -3600 | 90000 |
| 2014-03-29 | 3600 | 82800 |
| 2014-10-27 | -3600 | 90000 |
| 2015-03-28 | 3600 | 82800 |
| 2015-10-26 | -3600 | 90000 |
| 2016-03-26 | 3600 | 82800 |
| 2016-10-31 | -3600 | 90000 |
| 2017-03-25 | 3600 | 82800 |
| 2017-10-30 | -3600 | 90000 |
| 2018-03-24 | 3600 | 82800 |
| 2018-10-29 | -3600 | 90000 |
+------------+------------+-------------------+
Вот пример кода, который я запустил внутри моего полного кода -
echo $((($(date +%s --date 2006-03-31)-$(date +%s --date 2006-03-30))))
echo $((($(date +%s --date 2006-04-01)-$(date +%s --date 2006-03-31))))
echo $((($(date +%s --date 2006-04-02)-$(date +%s --date 2006-04-01))))