我今天正在使用date命令并发现了一些我无法解释的行为(我浏览过:〜$ info'(coreutils)日期调用'但没有找到任何内容)并希望这里有人可以帮我理解为什么会这样。
~$ date -u +%F -d "feb 28 -3years"
>> 2012-02-28
~$ date -u +%F -d "feb 29 2012"
>> 2012-02-29
~$ date -u +%F -d "feb 29 -3years"
>> date: invalid date ‘feb 29 -3years’
~$ date -u +%F -d 'feb 29 3 years ago'
>> date: invalid date ‘feb 29 3 years ago’
这发生在所有闰年/闰日(... 2008/2012/2016 ......),我无法弄清楚原因。
我'我在我的Ubuntu Gnome Edition(15.04)和运行Debian / Jessie的服务器上运行命令。
答案 0 :(得分:2)
它有点像hacky但是获得本月最后一天的好方法是到下个月的第一天,然后回到一天:
$ date -u +%F -d "mar 1 -3years -1day"
2012-02-29
我没有声称知道date
命令是如何实现的,但在进行减法之前,feb 29
是解释字符串的第一部分是合理的。所以最安全的做法是使用一个始终有效的日期,然后进行一系列的减法。