【发布时间】:2013-03-03 06:37:02
【问题描述】:
在 OpenBSD 上的 tcsh 中,我需要打印两周前的日期。
例如如果今天是2013-03-02,我需要打印出2013-02-16。
【问题讨论】:
在 OpenBSD 上的 tcsh 中,我需要打印两周前的日期。
例如如果今天是2013-03-02,我需要打印出2013-02-16。
【问题讨论】:
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'
【讨论】:
这应该可以工作(它适用于 GNU 日期。我对 OpenBSD 不是很熟悉。所以不确定它是否适合你)
date -d "now - 14 days" +%Y-%m-%d
【讨论】: