日付したい(date
)
$ date
Thu Jan 11 15:11:05 JST 2024
フォーマットしたい(+表示形式
)
// 年月日
$ date +%Y-%m-%d
20241018
// 年月
$ date +%Y%m
202410
// 週
$ date +%U
41
// 文字列入り
$ date +%U週目
41週目
+表示形式
オプションで日付のフォーマットを変更できます。
とても柔軟で、フォーマット指定子のほかに、文字列もそのまま表示できます。
表示内容 |
指定子 |
---|---|
年 |
|
月 |
|
日 |
|
時 |
|
分 |
|
秒 |
|
曜日 |
|
日数・週数 |
|
タイムゾーン |
|
指定子の大文字/小文字と表示内容の対応が覚えにくいので、毎回調べたほうがよいです。
ISO8601形式で出力したい
$ date +%Y-%m-%dT%H:%M:%S%z
2024-10-18T12:02:15+0900
// 空白を含む場合は""で囲む
$ date +"%Y-%m-%d %H:%M:%S%z"
2024-10-18 12:03:42+0900
ISO8601形式で表示したい場合は、自分でフォーマットを指定する必要があります。
Unixtimeで出力したい
$ date +%s
1704953493
+%s
オプションでUnix時間(秒)に変換できます。
スクリプトの実行時間を計測したい
1SECONDS=0
2(スクリプトを実行)
3echo "Duration: " $SECONDS
bash
には$SECONDS
という内部変数があり、スクリプトの実行時間を返してくれます。
スクリプトの冒頭でSECONDS=0
して初期化しておきます。
date
コマンドを使いたい場合は、最初と最後にdate +%s
でユニックス時間を取得し、その差分を計算すればよいと思います。
日時を設定したい(--set
)
$ date -s "2024-01-11 15:00:00"
Thu Jan 11 15:00:00 JST 2024
-s
オプションで日時を設定できます。
ヒント
Raspberry Piは内部クロックを持たないため、電源をOFFにしている間は時計が止まります。 スマホなどにテザリング接続して、時刻を自動修正することもできますが、 オフライン環境で再起動した場合は、時刻を手動で設定しなおす必要があります。
日付を変換したい(-d
)
1# Apacheログの日付
2accessed_date="Mon Oct 23 14:23:42.123456 2024"
3
4# "月 日 年 時刻" に並び替える
5parsed_date=$(echo "${accessed_date}" | awk '{print $2 " " $3 " " $6 " " $4}')
6echo ${parsed_date}
7
8# ISO8601形式に変換する
9formatted_date=$(date -d "${parsed_date}" +"%Y-%m-%dT%H:%M:%S")
-d
オプションで