📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == <br> == 昨日の日付を取得する == ==== 拡張されたdateコマンドGNU dateが使用可能な場合 ==== Linuxでは、拡張されたGNU dateコ…」 |
|||
| 248行目: | 248行目: | ||
date -d '12 hours ago' '+%Y-%m-%d [%H:%M:%S]' | date -d '12 hours ago' '+%Y-%m-%d [%H:%M:%S]' | ||
<br> | <br> | ||
dateコマンドで表示される日時を現在日時ではなく、以下のように、指定した日時でdateコマンドを実行することも可能である。<br> | |||
# | # 現在日時を、2021/01/01 12:13:14としてコマンドを実行する | ||
date -d ' | date -d '2021/01/01 12:13:14' | ||
# フォーマットの指定も可能 | # フォーマットの指定も可能 | ||
# | # dateコマンドに日時を指定すると、現在日時ではなく指定した日時で結果が表示される。 | ||
date -d '2021/01/01 12:13:14' '+%Y %m %d - %H %M %S' | date -d '2021/01/01 12:13:14' '+%Y %m %d - %H %M %S' | ||
<br> | <br> | ||
| 261行目: | 261行目: | ||
# フォーマットの指定も可能 | # フォーマットの指定も可能 | ||
date -d '2021/01/01 12:13:14 1 months ago' '+%Y %m %d - %H %M %S' | date -d '2021/01/01 12:13:14 1 months ago' '+%Y %m %d - %H %M %S' | ||
<br> | |||
==== 日付の比較を行う ==== | |||
ログファイル等から取得した日付において、タイムスタンプを比較する場合は、以下のように記述する。<br> | |||
<syntaxhighlight lang="sh"> | |||
#!/usr/bin/env sh | |||
# 1970-01-01 00:00:00からの経過秒に変換する | |||
DATE_1=`date -d "$1" '+%s'` | |||
DATE_2=`date -d "$2" '+%s'` | |||
# 2つの日付を表示しておく | |||
echo "DATE 1: $1" | |||
echo "DATE 2: $2" | |||
# 2つの日付を比較し、結果を表示する | |||
if [ $DATE_1 -eq $DATE_2 ]; then | |||
echo "指定された2つの日付は同一日時です。" | |||
elif [ $DATE_1 -gt $DATE_2 ]; then | |||
echo "DATE 1 の方が新しい日付です。" | |||
elif [ $DATE_1 -lt $DATE_2 ]; then | |||
echo "DATE 2 の方が新しい日付です。" | |||
fi | |||
exit 0 | |||
</syntaxhighlight> | |||
<br> | |||
上記の実行結果は、以下の通りである。<br> | |||
./xxx.sh "2021/01/01 00:00:00" "2021/01/01 00:00:00" | |||
# 出力 | |||
DATE 1: 2021/01/01 00:00:00 | |||
DATE 2: 2021/01/01 00:00:00 | |||
指定された2つの日付は同一日時です。 | |||
<br> | |||
./xxx.sh "2021/01/01 00:00:01" "2021/01/01 00:00:00" | |||
# 出力 | |||
DATE 1: 2021/01/01 00:00:01 | |||
DATE 2: 2021/01/01 00:00:00 | |||
DATE 1 の方が新しい日付です。 | |||
<br> | |||
./xxx.sh "2021/01/01 00:00:00" "2021/01/01 00:00:01" | |||
# 出力 | |||
DATE 1: 2021/01/01 00:00:00 | |||
DATE 2: 2021/01/01 00:00:01 | |||
DATE 2 の方が新しい日付です。 | |||
<br> | |||
日付は、<code>date</code>コマンドのフォーマット<code>'+%s'</code>を使用することにより、1970-01-01 00:00:00からの経過を秒に変換する。<br> | |||
これにより、日付の比較を単純な数値の比較とすることができる。<br> | |||
つまり、秒に変換することで、新しい日付の方が大きい数値ということになる。<br> | |||
<br> | |||
また、フォーマット<code>'+%s'</code>を使用した<code>date</code>コマンドの実行結果は、以下の通りである。<br> | |||
date -d '2021/01/01 00:00:00' '+%s' | |||
1609426800 | |||
date -d '2021/01/01 00:00:01' '+%s' | |||
1609426801 | |||
<br><br> | <br><br> | ||