首页 > 解决方案 > GNU 日期中有错误吗?(计算偏移量)

问题描述

我正在尝试按周对日志文件条目进行分组,并使用 GNU 日期来查找时间戳偏移量,以便与日志条目进行比较:

$ date --version
date (GNU coreutils) 8.25

$ today=$(date +%F)
$ ts_sow=$(date -d "$today - $(( $(date -d $today +%u) - 1) days" +%F)

这给出了本周星期一的日期。

$ echo $today
2018-11-15
$ echo $ts_sow
2018-11-12

现在当我想回到前一周时,我可以从本周开始偏移 7 天......

$ ts_sopw=$(date -d "$ts_sow - 7 days" +%F)
$ echo $ts_sopw
2018.11-05

但是,如果我尝试将两个偏移量都应用于原始开始日期,则会给出不正确的结果......

$ ts_sopw=$(date -d "$today - $(( $(date -d $today +%u) - 1 - 7 )) days" +$F)
$ echo $ts_sopw
2018-11-11

这是一个错误,还是我不理解这里发生的更多事情?

标签: dateoffsetgnu

解决方案


使用正确的算术,我可以得到正确的结果:

$ ts_sopw=$(date -d "$today - $(( $(date -d $today +%u) - 1 + 7 )) days" +$F)
$ echo $ts_sopw
2018-11-05

是虫子!


推荐阅读