linux - 为什么Linux系统时间每6个月加减一小时?

标签 linux system gnu

在计算连续 2 天之间的秒数时,应该有 86400 秒(24*60*60)。
但事实并非如此……
有一次一天有 23 小时,6 个月后一天有 25 小时。
为什么会这样?

我运行了一个代码来检查从 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))))

最佳答案

具有 %s 格式的 date 命令为您提供从纪元开始的以秒为单位的挂钟时间,并且您的位置有夏令时。因此,当您更改为夏令时或从夏令时更改为夏令时时,您要么增加要么减少一个小时。

关于linux - 为什么Linux系统时间每6个月加减一小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56787670/

相关文章:

regex - GNU grep 的基本/扩展和 PCRE (`-P` ) 正则表达式之间有什么区别?

bash - 两个文件夹中的差异文件忽略第一行

c++ - 来自命令行的 gnu 编译器

c - 有 glibc 哈希函数吗?

php - file_get_contents(和 wget)非常慢

linux - POSIX 中的 S_IRUSR 语义

.net - 项目中的所有系统命名空间都未定义

php - 如何从 PHP 运行 .bat 文件?

c - gcc 用 .s 文件编译 .c - .bss 混淆(错误?)

unix - 编写系统调用并阻塞进程