GNU dateが使用可能であることが前提
現在日付取得
# 結果 2015年 9月 14日 月曜日 17:00:11 JST date
フォーマット指定
date +"format"で指定+の位置は""の内と外どっちもいける?
# 結果 2015/09/14 17:09:48 date +"%Y/%m/%d %H:%m:%S" # 結果 2015年09月14 17時09分48秒 date +"%x %X"
以下フォーマット
そこそこ自由は利く模様
%Y 年
%m 月
%d 日
%H 時
%m 分
%S 秒
%w 週(日,月... 0,1...)
%F yyyy-MM-dd
%D yy/MM/dd
%T HH:mm:ss
%x yyyy年MM月dd日(ロケールの日付表現)
%X HH時mm分ss秒(ロケールの時間表現)
オプション -d で文字列から日付へ変換したり日付の加減算が可能
date "d yyyyMMdd"環境にもよると思うがわりと融通が利く模様
yyyy/MM/dd
yyyy-MM-dd
yyyyMMdd
形式なら変換可能だった
# 結果 2015年 9月 13日 日曜日 18:53:35 JST date "d 2015/02/01"
指定した文字列から、日付を加減算して取得する処理
これを知りたかった!!文字列"2010/03/02"から一年引いて二ヶ月足して五日引いてみた例
# 結果 2009/04/27 date "-d 2010/03/02 1 year ago 2 months 5 days ago" "+%Y%m%d"
せっかくなので月末日の取得処理も書いとく
2024/06/30 の月末日を取得した例# 結果 2024-06-30 dt="2024/06" echo `date "-d $dt/01 1 months 1 days ago" "+%F"`
手順としては年月を変数に持たして"+01"をくっつけて1ヶ月後の1日前を計算している感じです。
スラなしの方法が思いつきませんでした。