一个具体日期的ANSI Date指的是该日期到1600年12月31日经过的天数。
1601年1月1日的ANSI Date为1。
在Linux中使用如下命令,我们可以查看从1600-12-31
经过134775天以后的日期。
date -ud '1600-12-31 + 134775 day' +%F
结果是:1970-01-01
此外,date命令还有一个格式参数%s
可以输出1970-01-01 00:00:00 UTC
到给定日期的秒数(有时候这种时间表示方法也叫UNIX time indexing)。我们可以利用这个计算给定日期的ANSI Date。
思路是先计算出到1970-01-01
的秒数,然后转换为天数,然后加上到1600-12-31
的天数。
例如下面的命令输出2012-01-04
对应的ANSI Date。
echo $(( $(date -ud '2012-01-04' +%s) / (3600 * 24) + 134775 ))
输出结果是:150118
注:在Linux shell中,我们可以使用 $(()) 将表达式放在括号中,即可达到运算的功能。