unixshell脚本中两个日期的差异

unixshell脚本中两个日期的差异,unix,datetime,unix-timestamp,Unix,Datetime,Unix Timestamp,我有两个日期,日期+%Y%m%d%H%m%S”格式。如何发现差异,如何检查差异是否超过4小时? 我就是这样尝试的 echo $(( ( $(date +"%Y%m%d%H%M%S") - $(date +"%Y%m%d%H%M%S" -d "1970-01-01 + $(stat -c '%Z' filename ) secs")))) date命令返回此 Sun Sep 6 10:35:19 CDT 2015 此shell函数使用GNU date实用程序将日期字符串转换为自历元起的秒数:

我有两个日期,日期+%Y%m%d%H%m%S”格式。如何发现差异,如何检查差异是否超过4小时? 我就是这样尝试的

echo $(( ( $(date +"%Y%m%d%H%M%S") - $(date +"%Y%m%d%H%M%S" -d "1970-01-01 + $(stat -c '%Z' filename ) secs"))))
date命令返回此

Sun Sep  6 10:35:19 CDT 2015

此shell函数使用GNU date实用程序将日期字符串转换为自历元起的秒数:

function dateconv() {
    date --date=${1:0:4}-${1:4:2}-${1:6:2}T${1:8:2}:${1:10:2}:${1:12:2} +%s
}
它插入连字符、冒号和T以将其转换为日期理解为输入格式的ISO 8601格式

定义好后,您可以执行如下操作来检查变量d1和d2中两个字符串之间的差异:

if [ $(( $(dateconv $d2) - $(dateconv $d1) )) -gt 14400 ]
then
    echo Difference is more than 4 hours
fi

它将两个日期字符串转换为秒,减去它们,并检查差值是否超过14400秒(4小时)。

您可以将它们转换为unix时间戳。