Macでdateコマンドを使いこなす

Macでdateコマンドを使いこなす

MacBSDベースのOSなので、
Redhat系のコマンドと少し違っています。

日付を取得する「date」コマンドで
つまづいてしまったので、
コマンドのオプションをまとめてみました。

Mac のDateコマンド

以下のオプションがあるようです。

$ date ?
date: illegal time format
usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

ひとつずつ、整理してみました。

-j

システムの日付は変更せず、指定された日付を出力するオプション
*単体では機能しない

-n

実行環境の時刻のみ変更するオプション

-r

秒指定で日時を受け付けるオプション

$ date -r 10
1970年 1月 1日 木曜日 09時00分10秒 JST

*1970/1/1 09:00から計算される

-u

UTCの日時を表示するオプション
*オプションをつけないと、実行環境のタイムゾーンを参照して表示される

$ date -u
2018年 3月23日 金曜日 08時50分58秒 UTC
$ date
2018年 3月23日 金曜日 17時50分59秒 JST

-R

RFC2822形式(インターネットメッセージフォーマット)で出力するオプション

$ date -R
Fri, 23 Mar 2018 17:52:15 +0900

-f

任意のフォーマットで日時を受け付けるオプション

$ date -j -f "%Y %m/%d %H:%M:%S" "2020 01/01 12:15:00"
2020年 1月 1日 水曜日 12時15分00秒 JST

-v[+|-]val[ymwdHMS]

日付を調整するオプション

-v+1y 1年後
-v+1m 1ヶ月後
-v+1w 1週間後
-v+1d 1日後
-v+1H 1時間後
-v+1M 1分後
-v+1S 1秒後

-v-1y 1年前
-v-1m 1ヶ月前
-v-1w 1週間前
-v-1d 1日前
-v-1H 1時間前
-v-1M 1分前
-v-1S 1秒前

$ date
2018年 3月26日 月曜日 17時37分11秒 JST
$ date -v+1d
2018年 3月27日 火曜日 17時37分12秒 JST

+format

任意のフォーマットで出力するオプション

+”%Y-%m-%dT%H:%M:%S (%w)”

$ date +"%Y-%m-%dT%H:%M:%S (%w)"
2018-03-23T17:43:48 (5)

-d, -t

この2つは、時間設定オプションのようですが、よくわかりませんでした。

組み合わせ例

オプションを色々使って、
2020/1/1 の翌日をY-m-d H:M の形式で出力する

$ date -v+1d -j -f "%Y %m/%d %H:%M:%S" "2020 01/01 12:15:00" +"%Y-%m-%d %H:%M"
2020-01-02 12:15

参考文献

FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)

ツールカテゴリの最新記事