【问题标题】:tcsh: print date 2 weeks ago in shelltcsh:在 shell 中打印 2 周前的日期
【发布时间】:2013-03-03 06:37:02
【问题描述】:

在 OpenBSD 上的 tcsh 中,我需要打印两周前的日期。

例如如果今天是2013-03-02,我需要打印出2013-02-16

【问题讨论】:

    标签: date tcsh


    【解决方案1】:

    tcsh 似乎不允许执行嵌套命令,所以看来必须使用ksh

    date +%Y-%m-%d ; \
    sh -c 'date -r $(expr $(date +%s) - $(expr 60 \* 60 \* 24 \* 14)) +%Y-%m-%d'
    2013-03-02
    2013-02-16
    

    我们以 UTC 中纪元以来的秒数获取日期,并使用 expr 以秒为单位计算两周,减去,然后使用 -r 参数将这些秒传递回 date

    不确定是否有更短的解决方案,除了使用1209600 代替$(expr 60 \* 60 \* 24 \* 14)

    sh -c 'date -r $(expr $(date +%s) - 1209600) +%Y-%m-%d'
    

    【讨论】:

    • 我花了 10 多分钟来了解为什么它没有在我的 shell 中提供输出。然后我看到了你的评论... :(
    【解决方案2】:

    这应该可以工作(它适用于 GNU 日期。我对 OpenBSD 不是很熟悉。所以不确定它是否适合你)

    date -d "now - 14 days" +%Y-%m-%d
    

    【讨论】:

    • 不,这显然行不通。但对于 GNU/Linux 用户来说,这是一个有趣的选择!
    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多