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

打印出 11 月 30 日而不是 12 月 1 日

答案1

您可以向输入日期字符串添加一个月(使用 GNU 日期),如下所示:

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

或者:

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

当您单独引用$D和时+next months,它会变成两个不同的参数,不会按您希望的方式按日期读取。

相关内容