date +"%Y%m%d%H%M%S" 形式の日付が 2 つあります。時間差を見つける方法と時間差が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
答え1
たとえば、
date1=20150906171119
date2=20150906172244
はい/開始は次のとおりです。
#!/bin/bash
date1=20150906171119
date2=20150906172244
# Convert date to YYYYMMDD HH:MM:SS and get time in seconds.
d1=$(date -d"${date1:0:8} ${date1:8:2}:${date1:10:2}:${date1:12:2}" +%s)
d2=$(date -d"${date2:0:8} ${date2:8:2}:${date2:10:2}:${date2:12:2}" +%s)
# Limit in seconds
# 60 = 1 min
# 3600 = 1 hour
# 14400 = 4 hours
lim=14400
# arg1=time1 (seconds)
# arg2=time2 (seconds)
# arg3=difference limit
ddiff()
{
if (($1 > $2)); then
ddiff $2 $1 $3
else
return $(($2 - $1 < $3))
fi
}
if ddiff $d1 $d2 $lim; then
echo more then $lim seconds
else
echo less then $lim seconds
fi
date1 = date2
これが重要な場合は、同等性チェックを実行できます。
答え2
形式にタイムゾーンがないため、これを行うことはできません。
"%Y-%m-%d %H:%M:%S %z"
たとえば、標準化された形式で、diff -u
形式にはタイムゾーンが含まれます。