有没有办法使用一年中的某一天作为日期命令的输入格式?

有没有办法使用一年中的某一天作为日期命令的输入格式?

使用命令

$ date +%j

给出一年中的某一天的输出 (001-366).但是我需要使用当年的某一天作为输入格式,即

$ date --date='066 day'  +%F

我预计 2021 年的2021-03-07产出是这样的。相反,我得到了2021-05-13。有谁知道发生了什么事以及是否有办法获得我想要的东西date

答案1

使用 GNU 获取一年中的第 66 天date

$ date --date='jan 1 + 65 days' +%F
2021-03-07

或者

$ date --date='dec 31 last year + 66 days' +%F
2021-03-07

您将date --date='066 day' +%F获得从今天起 66 天后的日期。 3月8日,正好是5月13日。


上面使用了 GNU date。在 OpenBSD 上(不是你问的,但无论如何),你可以执行如下操作:

$ date -u -r "$(( $(date -ju -f %m%d 0101 +%s) + 65*86400 ))" +%F
2021-03-07

这与上面的第一个 GNU 命令有些相似,date它增加了从 1 月 1 日开始的一些时间。

答案2

我建议这个选项:例如,如果您想知道第 80 天的日期:

# take the number of day today
$ n=$(date +%j)
# set some number of days you want to know the date
$ t=80
# subtract the 'n', and add the 't'
$ date -d "-$n day +$t day" %F
2021-03-21

适应你的例子:

$ n=$(date +%j)
$ t=66
$ date -d "-$n day +$t day" %F
2021-03-07

相关内容