【问题标题】:Add X days to a particular date in BASH将 X 天添加到 BASH 中的特定日期
【发布时间】:2017-09-25 18:33:51
【问题描述】:

对 BASH 完全陌生。提前道歉。


问题

我想将 X 天添加到特定日期。


代码

我发现 BASH 中的 date 检索当前日期。

我也想通了,可以通过以下方式将 X 天添加到当前日期,

expiration_date=$ date -v +1d

给出,

Tue Sep 26 20:28:13 CEST 2017 

确实是写作日期加上X=1天。


问题

代替上面命令行中的date,我想插入一个特定的日期,将添加 X 天,例如2017 年 9 月 20 日。

不关心特定日期的格式。

换句话说:我如何进行以下工作,

expiration_date=$ '20/09/2017' -v +1d

试过this answer,但没有做我想做的事。


编辑:不知道 OSX 有什么不同。

【问题讨论】:

    标签: bash macos date


    【解决方案1】:

    你可以这样做:

    dt='2017-09-20'
    
    date -d "$dt +1 day"
    Thu Sep 21 00:00:00 EDT 2017
    
    date -d "$dt +2 day"
    Fri Sep 22 00:00:00 EDT 2017
    

    看来 OP 正在使用 OSX。您可以通过这种方式使用日期添加:

    s='20/09/2017'
    date -j -v +1d -f "%d/%m/%Y" "$s"
    
    Thu Sep 21 14:49:51 EDT 2017
    

    【讨论】:

    • 谢谢。当我执行你的命令时,我的终端会显示这个:usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]。不知道该怎么办?
    • 你在 OSX 上吗?我提供的这个日期命令是针对gnu date 的。在我的 OSX 上,我使用 brew 安装程序获得了它。
    • 谢谢,成功了!不知道 OSX 上的情况有所不同。
    • 最后一个问题。如果我想将加法结果分配给一个变量并调用它,我该怎么做? IE。 end=(date -j -v +1d -f "%d/%m/%Y" "$s")echo end 的正确形式。
    • 好吧,我摸索着 i.a.空格,发现end=$( date -j -v +30d -f "%d/%m/%Y" "$s") echo $end 有效。谢谢。
    【解决方案2】:

    你可以这样做:

    date -d "Sun Sep 6 02:00:00 IST 2012+10 days"
    

    【讨论】:

    • 在 OSX 中不工作
    猜你喜欢
    • 2021-04-26
    • 2023-03-09
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2023-03-06
    相关资源
    最近更新 更多