endDate=`date +%m-%d-%Y`
endDate=`expr $endDate -7`
echo "$endDate"
上記のコードはエラーですが、以下のコードは正しく動作します。私は上記の日付形式を使用したい。どうすればこれを達成できますか?シェルスクリプトの日付
TODAY=`date +%d`
TODAY=`expr $TODAY - 7`
echo $TODAY
endDate=`date +%m-%d-%Y`
endDate=`expr $endDate -7`
echo "$endDate"
上記のコードはエラーですが、以下のコードは正しく動作します。私は上記の日付形式を使用したい。どうすればこれを達成できますか?シェルスクリプトの日付
TODAY=`date +%d`
TODAY=`expr $TODAY - 7`
echo $TODAY
"expr:非整数引数"が表示されるエラーは、どのような問題が発生しているかを示すはずです。あなたが「04-14-2017」から7を引くと、あなたはあなたが期待するものを得られません。先週取得するには、「今」
endDate=`date -d '7 days ago' +"%m-%d-%Y"`
echo $endDate
date +%d
は数を返し、あなたから7を引くことができますので、コマンドのあなたの第二セットの動作の代わりに、デフォルトの特定の日付を取得するには-d
フラグに渡すことができます数。 date +%m-%d-%Y
は文字列を返し、文字列から7を引くことはできないため、最初のコマンドセットは失敗します。
date
コマンドの場合、特に夏時間のタイムゾーンを使用している場合は、適切かつ安全に日付計算を行うのは少し複雑です。 Date :: EzDateやDateTimeなどのPerlモジュールをお勧めします。
これを適切に管理する適切な方法は、初期日付を1970(UTC)から秒に変換し、2番目の単位を単位として使用して最終的なUTCを希望の日付形式に変換することです – aicastell
ありがとうChris – Satte