使用命令
$ 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