これにより、日付が秒単位で表示されます (UNIX エポック以降)
date --date '2017-08-17 04:00:01' +%s # "1502938801"
これにより、秒数から読み取り可能な文字列として日付が得られます
date --date '@1502938801' # "17 Aug 2017 04:00:01"
必要なのは、日付/タイムスタンプを GNU date
の形式に変換することだけです 理解し、数学を使用して違いを判断し、結果を出力することができます
datetime1=20170817040001
datetime2=20160312000101
seconds1=$(date --date "$(echo "$datetime1" | sed -nr 's/(....)(..)(..)(..)(..)(..)/\1-\2-\3 \4:\5:\6/p')" +%s)
seconds2=$(date --date "$(echo "$datetime2" | sed -nr 's/(....)(..)(..)(..)(..)(..)/\1-\2-\3 \4:\5:\6/p')" +%s)
delta=$((seconds1 - seconds2))
echo "$delta seconds" # "45197940 seconds"
ここではタイムゾーン情報を提供していないため、ローカル タイムゾーンを想定しています。日時からの秒数の値は、おそらく私のものとは異なるでしょう。 (値が UTC の場合は date --utc
を使用できます .)
これは datediff
で簡単です dateutils
で提供されるコマンド パッケージ。
ddiff -i '%Y%m%d%H%M%S' 20170817040001 20160312000101