如何使用linux中的命令动态更改日期

时间:2014-10-16 17:16:55

标签: python linux datetime

我正在编写一个python代码,将linux系统中的日期更改为今天1(动态)。我试过各种组合,但是我无法成功。我搜索了一下,发现我的情景in this question非常接近。

如果我执行带静态值的命令,我可以更改日期:

date --set="$(date +'2013%m%d %H:%M')"

但是,我不想指定年份的硬编码值,即2013年。相反,我想指定类似"%y-1"的内容,即

date --set="$(date +'%y-1%m%d %H:%M')"

如果我运行上面的命令,我会收到以下错误

[root@ramesh ~]$ date --set="$(date +'%y-1%m%d %H:%M')"
date: invalid date `14-11016 13:05'

2 个答案:

答案 0 :(得分:2)

感谢您的回答。我没有尝试你的方法,因为如果你愿意,在处理算术运算时必须再次处理格式化问题。

所以,我想出了一个更简单和更通用的方法

使用此命令

获取previous_year值

date --date='1 years ago'

这给出了上一年的日期。现在,这可以在python程序中用于以下列方式更新系统

"date --set=$(date +'%%y%%m%s %%H:%%M') % previous_year"

这种方法没有什么优点,比如

  1. 我可以将此方法应用于日期和月份,例如"1 days ago", "1 month ago"+%d, +%m, +%y值。

    例如,date --date='1 years ago' +%y

  2. 我不必担心日期和月份算术计算逻辑

答案 1 :(得分:0)

date会根据你的表现解释%y-1。您需要的是检索当前年份,减1并将此值用作新年。 要获得current_year - 1,您可以这样做:

previous_year=$((`date +'%y'`-1))
echo $previous_year 
>>> 13

现在您只需要使用此变量来设置新日期。