详解Linux下用date命令查看和计算包含时区的时间戳

来源:互联网 发布:天谕最萌玲珑捏脸数据 编辑:程序博客网 时间:2024/05/22 01:29

在Linux中

1、执行date命令,可以查看当前的时间:

2014年 09月 03日 星期三 10:29:00 CST

其中CST是中国标准时间(China Standard Time)的缩写

2、执行date -u,可以查看当前标准UTC时间:

2014年 09月 03日 星期三 02:29:00 UTC
其中UTC是世界协调时间(Universal Time Coordinated)的缩写

3、执行date --rfc-3339=seconds,可以以时区的方式查看当前时间,而不是时区的缩写

2014-09-03 10:29:00+08:00
其中最后的+08:00表示时区,即东八区,北京时间,CST

4、执行date --rfc-3339=seconds -u,可以以时区的方式查看UTC时间,而不是时区的缩写

2014-09-03 02:36:03+00:00
其中+00:00表示时区,即0区


5、执行date +%s或者date +%s -u(结果都一样),可以查看1970-01-01 UTC 00:00:00到现在所经过的秒数

1409712078

6、执行date -d '1970-01-01 UTC+00:00 00:01:00' +%s或者date -u -d '1970-01-01 UTC+00:00 00:01:00' +%s(结果都一样)可以查看1970-01-01 UTC+00:00 00:00:00距1970-01-01 UTC 00:00:00到现在所经过的秒数

60
返回0

7、执行date -d '1970-01-01 UTC+08:00 00:00:00' +%s或者date -u -d '1970-01-01 UTC+08:00 00:00:00' +%s可以查看1970-01-01 UTC+08:00 00:00:00距1970-01-01 UTC 00:00:00到现在所经过的秒数

-28800
返回-28800,正好是8个小时所经过的秒数(8 x 60 x 60s)。这表示如果要将北京时间(UTC+08:00)的时间戳转换成时间协调时间(UTC+00:00)需要减去28800秒。

这是因为北京所在的时区是东八区,比UTC时间快8个小时。所以同一时间点,在时区为0的区(UTC+00:00)是1970-01-01 UTC+00:00 00:00:00,而在东八区(UTC+08:00)是1970-01-01 UTC+08:00 08:00:00。具体的公式如下:

UTC + 时区差=本地时间UTC = 本地时间 - 时区差(时区差东为正,西为负)
这点也可以执行date -d '1970-01-01 UTC+08:00 08:00:00' +%s或者date -d '1970-01-01 UTC+08:00 08:00:00' +%s(结果都一样)看出

0
8、在得到一个时间戳后,我们可以反向的计算出它的日期。如UTC+00:00的1409714549

(1)执行date -u -d '1970-01-01 UTC+00:00 1409714877 seconds'可以计算出这个时间戳转换成UTC+00:00的日期

2014年 09月 03日 星期三 03:27:57 UTC
(2)如果不带参数-u执行date -d '1970-01-01 UTC+00:00 1409714877 seconds'可以计算出这个时间戳转换成UTC+00:00的日期后,在转换成本地时间的日期

2014年 09月 03日 星期三 11:27:57 CST


0 0
原创粉丝点击