使用命令
$ date +%j
Run Code Online (Sandbox Code Playgroud)
给出一年中某一天的输出 (001-366)。但是我需要使用当前年份的日期作为输入格式,即
$ date --date='066 day' +%F
Run Code Online (Sandbox Code Playgroud)
对于 2021 年,我希望将其2021-03-07
作为输出。相反,我得到2021-05-13
. 有谁知道发生了什么,以及是否有办法获得我想要的使用date
.
Kus*_*nda 19
要使用 GNU 获得一年中的第 66 天date
:
$ date --date='jan 1 + 65 days' +%F
2021-03-07
Run Code Online (Sandbox Code Playgroud)
或者
$ date --date='dec 31 last year + 66 days' +%F
2021-03-07
Run Code Online (Sandbox Code Playgroud)
随着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
Run Code Online (Sandbox Code Playgroud)
这有点类似于date
上面的第一个 GNU命令,因为它从 1 月 1 日开始增加了一些时间。
我提出这个选项:例如,如果您想知道第 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
Run Code Online (Sandbox Code Playgroud)
适应您的示例:
$ n=$(date +%j)
$ t=66
$ date -d "-$n day +$t day" %F
2021-03-07
Run Code Online (Sandbox Code Playgroud)