遇到错误。我正在尝试获取用户发送日期时的下个月。
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
,它会变成两个不同的参数,不会按您希望的方式按日期读取。