📢 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>
dateコマンドで表示される日時を現在日時ではなく、以下のように、指定した日時でdateコマンドを実行することも可能である。<br>
  # 現在日時を「2006/01/01 12:13:14」としてコマンドを実行する
  # 現在日時を、2021/01/01 12:13:14としてコマンドを実行する
  date -d '2006/01/01 12:13:14'
  date -d '2021/01/01 12:13:14'
   
   
  # フォーマットの指定も可能
  # フォーマットの指定も可能
  # date コマンドに日時を指定すると、現在日時ではなく指定した日時で結果が表示される。
  # 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>