date命令中的“ 1个月前”选项如何工作?

ach

我不确定这是否是当前日期的过去日期,或者仅需要30或31天。

例如

如果当前日期March 28th必须是1个月前February 28th,但是当它是什么时候会发生什么呢March 30th

设想

我想每天备份一些文件,该脚本将使用$(date +%Y%m%d)格式将当前文件保存在当前日期内,例如20150603_bckp.tar.gz,然后在下个月到来时,删除1个月前除1号和15号文件之外的所有那些文件,因此这是我的状况:

past_month = $(date -d "-1 month" +%Y%m%d)
day = $(date +%d)
if [ "$day" != 01 ] && [ "$day" != 15 ]
then
    rm /path/of/files/${past_month}_bckp.tar.gz
    echo "Depuration done"
else
    echo "Keep file"
fi

但是我想知道,当日期是30日,31日甚至是2月的例子时,会发生什么?会保留那些文件吗?或删除第一天的文件?

到31日时将执行净化,因此,如果过去一个月只有30天,这会删除第一天的文件吗?

我希望我能暗示。

- 1 month将从月份号中减去一个,然后如果结果日期无效(February 30例如,),请对其进行调整以使其有效。那么December 31 - 1 monthDecember 1,没有一天11月和March 31 - 1 monthMarch 3(除非闰年执行)。

这是信息页中有关Gnu datedate实现该语法版本)的引文,其中包括一个使算法更健壮的好建议:

单位的绒毛可能导致相关项目出现问题。例如,2003-07-31 -1 month由于2003-06-31是无效的日期,因此可能评估为2003-07-01。为了更可靠地确定前一个月,您可以要求当月15号之前的一个月。例如:

    $ date -R
    Thu, 31 Jul 2003 13:02:39 -0700
    $ date --date='-1 month' +'Last month was %B?'
    Last month was July?
    $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
    Last month was June!

信息页面也引用了另一条警告:

另外,在围绕时钟更改的日期(例如,夏时制飞跃)操作时要小心。在少数情况下,这些时间会增加或减少24小时,因此在开始进行日历计算之前,通过将TZ环境变量设置为,采用通用时间通常是明智的UTC0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获得上个月?date +%Y%m -d“ 1个月前”在3月30日无效

如何检查Php中是否有超过7天或1个月前的东西?

Ruby Date 1个月前转换为String

接受“ new java.util.Date()”并将其设置为1个月前

date 命令从给定变量计算一个月前

如何在PHP中显示一个月前

如何在 SQL Oracle 中显示不超过一个月前的记录?

如何在 bash 中更改有关“date”命令的命令和选项?

如何在python程序中执行date命令

少于3个月前的Linux tar文件,使用文件名中的日期

获取至少6个月前在Pandas DataFrame中具有最新日期的id的值

使用python在3个月前的平均值中填充0

在PostgreSQL中获取一个月前的时间戳

如何在Hive中获得X个月前的第一天?

获取时间戳列来自2个月前而不是1个月前的记录

r 中 x 个月前数据的子集

Javascript获得1个月前的时间戳

DAX查询以返回1个月前的文本值

如何确定6个月前的完整日期

如何计算13个月前的数据滚动

date命令可以将另一个date命令给定的文件中的日期字符串作为参数吗?

如何通过Java在bash中传递$(date +“%Y”)这样的命令参数?

如何在date -d UNIX命令中读取dd / mm / yyyy日期字符串?

使用:r!date和其他shell命令时,如何防止Vim中的换行符?

1 个月前的值滞后

如何在mysql中执行1个月的查询间隔

命令中匹配的选项

如何使用jQuery从Date.UTC数组中的每个月中减去一个月

ps 命令:'-q' 选项如何工作?