見出し画像

シェルプログラミング - 日付で気になる点

MACとWIndows?でdateコマンドのオプションが異なっていて、?となった。
どちらもGNUのbashなんだけど…どうしてだろう?

環境①:macOS Monterey Ver 12.6

$ bash -version | head -n 1
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin21)

環境②:Windows10,PowerShell,ubuntu

$ bash -version | head -n 1
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)

今日の日付

#!/bin/bash

DATE1=`date +%Y%m%d%H%M%S`
echo ${DATE1}

# output -----
# 20221029203030
#!/bin/bash

DATE=`date '+%Y/%m/%d'`
echo ${DATE}
# 2022/10/29

DATE=`date '+%F'`
echo ${DATE}
# 2022-10-29

DATE_Y=`date '+%Y'`
DATE_M=`date '+%m'`
DATE_D=`date '+%d'`

echo ${DATE_Y}
# 2022
echo ${DATE_M}
# 10
echo ${DATE_D}
# 29

今の時刻

$ date +%R
18:50

1日前の日付 環境①

CDATE=`date -v-1d '+%Y/%m/%d (%a)'`
echo ${CDATE} # 2022/11/19 (土)

1日前の日付 環境②

date --date "-1 day " "+%Y-%m-%d"

1年前の日付 環境①

CDATE=`date -v-1y '+%Y/%m/%d (%a)'`
echo ${CDATE} # 2021/11/20 (土)

1年前の日付 環境②

date --date "-1 year " "+%Y-%m-%d"

1ヶ月前の日付 環境①

CDATE=`date -v-1m '+%Y/%m/%d (%a)'`
echo ${CDATE} # 2022/10/20 (木)

1ヶ月前の日付 環境②

date --date "-1 month " "+%Y-%m-%d"

1年2ヶ月と3日前の日付 環境①

1年 2ヶ月 3日後の場合は以下のように組み合わせます。

CDATE=`date -v-1y -v-2m -v-3d '+%Y/%m/%d (%a)'`
echo ${CDATE} # 2021/09/17 (金)

1年2ヶ月と3日前の日付 環境②

date --date "-1 year -2 month -3 day " "+%Y-%m-%d"

ミリ秒まで表示

%Nでナノ秒、上3つでミリ秒

# date "+%Y-%m-%d %H:%M:%S.%N" # 2022-11-22 20:19:56.658313300
date "+%Y-%m-%d %H:%M:%S.%3N" # 2022-11-22 20:19:56.669


この記事が気に入ったらサポートをしてみませんか?