シェルで日付を扱う

dateコマンドで10日前の日付を取得する
DATE=`date ‘+%Y%m%d’ –date ’10 days ago’`

シェルで日付フォーマットを扱う(正規表現)

if test ${1%=*}=”–date” && test $# -ne 0;
then
repdate=${1##*=}
yyyy=${repdate%%-*}
year=$yyyy
month=${repdate#*-}
mm=`expr “00${month%%-*}” : ‘0*\([0-9][0-9]\)’`
day=${repdate##*-}
dd=`expr “00${day}” : ‘0*\([0-9][0-9]\)’`

#日付フォーマット確認
if test ${1%=*}=”–date” && test “x$yyyy” = “x” || \
test “x$mm” = “x” || test ” x$dd” = “x” || \
test $yyyy -lt 1970 || test $yyyy -gt 2040 || \
test $mm -gt 12 || test $dd -lt 1 || test $dd -gt 31;
then
echo “ERROR date”
exit 1
fi

else
echo “ERROR! –date=yyyy-mm-dd”
exit 1
fi

月曜日をチェックするときはこんな感じ?

N=0
WDAY=0
while test $WDAY -ne 2
do
WDAY=`date ‘+%w’ –date “$N days ago” `
N=`expr $N + 1`
done
year=`date ‘+%Y’ –date “$N days ago”`
month=`date ‘+%m’ –date “$N days ago”`
day=`date ‘+%d’ –date “$N days ago”`
echo $year $month $day

HTML5