Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash日期无效日期(-d';2月29日-3年';)_Bash_Date - Fatal编程技术网

bash日期无效日期(-d';2月29日-3年';)

bash日期无效日期(-d';2月29日-3年';),bash,date,Bash,Date,今天我在使用date命令时发现了一些我无法解释的行为(我浏览了:~$info'(coreutils)date invocation'但没有找到任何东西),希望这里的人能帮助我理解为什么会发生这种情况 ~$ 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命令时发现了一些我无法解释的行为(我浏览了:~$info'(coreutils)date invocation'但没有找到任何东西),希望这里的人能帮助我理解为什么会发生这种情况

~$ 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版本(15.04)和运行Debian/Jessie的服务器上运行上述命令。

这有点不太正常,但是一个获得月最后一天的好方法是转到下个月的第一天,然后在一天之前返回:

$ date -u +%F -d "mar 1 -3years -1day"
2012-02-29

我不知道
date
命令是如何实现的,但在进行减法运算之前,
feb 29
是解释字符串的第一部分,这是有道理的。所以,最安全的做法是使用一个始终有效的日期,然后进行一系列的减法。

看起来date试图在减去3年之前得到2015年2月29日,2015年没有2月29日,如果你想知道我在测试一个脚本时遇到的闰日,我写了一个脚本,给出了一年中一个月的所有日子,这会有所帮助。我只是改用201420152016之类的年份来解决这个问题。[我读了](),但除了最后一句之外,找不到任何提示。