我将从文件中读取随机日期,我想从该日期减去4个月。我是用Perl编程的,但我可以使用bash命令。
如果我有2013年10月14日,我将获得2013年6月14日。
非常感谢!
卡雷姆
发布于 2017-02-03 04:41:08
当心那些有更多天数的月份!
下面是一个例子,减去一个月得到的答案可能是你意想不到的
endOfMarch=$(date -d "2017-03-31")
today=$endOfMarch
echo $(date -d "$today -1 month" "+%Y-%m-%d")
2017-03-02因为二月只有28天,减去一个月实际上就产生了日期2017-02-31,这个日期显然不存在,因此已经溢出到给出2017-03-02的三月的额外天数
根据您试图解决的问题,您可以通过创建一个设置为当前月份的第一天的日期变量,然后减去月份,可靠地计算出几个月前的n。
endOfMarch=$(date -d "2017-03-31")
today=$endOfMarch
firstDayOfMonth=$(date -d "$today" "+%Y-%m-01")
echo $(date -d "$firstDayOfMonth -1 month" "+%Y-%m-%d")
2017-02-01因此,现在您有了正确的Month (即减去1个月后的2月),然后您必须根据您的用例确定将新日期设置为哪个Day。
因此,增加/减少月份并不像人们想象的那样简单
https://stackoverflow.com/questions/19714650
复制相似问题