在Shell脚本中将月份添加到变量日期

7

我需要将一个日期传入shell脚本,并且需要在此基础上加一个月。 例如:

passed_date=2017-06-01

我需要给它加1个月:
converted_date=2017-07-01

我该如何在shell脚本中实现这个功能。我尝试将日期转换为自纪元以来的秒数,然后再加上1个月,例如:
date +%s -d 20170601 -d "+1 month"

将秒数转换回 yyyy-mm-dd 的方法为:
date -d@$(date +%s -d 20170601 -d "+1 month") +%Y-%m-%d

但基本上是在当前系统日期上增加一个月。
2个回答

15

你似乎正在寻找:

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

当在同一命令中使用多个-d标志时,date似乎只使用最后一个标志。

当然,可以用包含任何日期的$VAR替换20170601


重要的是记住,在进行这个计算时,日期应该以日、月和年完整格式化。 - Fernando Delago
这个答案的补充说明:date -d "20170601 + 1 month - 1 day" +%Y-%m-%d 显示了一个月的第一天和最后一天。 - RonJohn
如果你没有指定添加一个月的日期,它似乎会使用当前日期。 - Luis Carlos

1

对于macOS High Sierra

date -v+1m -j -f "%Y-%m-%d" "2017-06-01"

1
我认为输入格式(-f)应该改成%Y-%m-%d(小写的m)。 - customcommander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接