bash 来月エラー

bash 来月エラー

エラーが発生しました。ユーザーが日付を送信すると、翌月を取得しようとします。

D="2019/12/01";
D=$(date -d "$D");
echo "Current Date = $D";

印刷Current Date = Sun Dec 1 00:00:00 EST 2019

current_month=$(date -d "$D" '+%m');
echo "Current Month = $current_month";

印刷Current Month = 12

nextm=$(date -d "$D" "+next months");
echo "Next Month = $nextm";

印刷Next Month = next months 来月はどのように受け取りますか?

****************更新************************

D="2019/11/01";
D=$(date -d "$D");
echo "Current Date = $D";
Current Date = Fri Nov  1 00:00:00 EDT 2019
current_month=$(date -d "$D" '+%m');
echo "Current Month = $current_month";
Current Month = 11

next_date=$(date -d "$D next month")
echo "Next Date = $next_date";
Next Date = Sat Nov 30 23:00:00 EST 2019
next_year=$(date -d "$next_date" '+%Y');
echo "Next Year = $next_year";
Next Year = 2019

12月1日ではなく11月30日を印刷します。

ベストアンサー1

次のように、入力日付文字列(GNU Dateを使用)に月を追加できます。

nextm=$(date -d "$D +1 month")

または:

nextm=$(date -d "$D next month")

$Dとを別々に引用すると、+next months2つの異なるパラメータになり、日付ごとに必要に応じて読み取られません。

おすすめ記事