日付コマンドの入力形式で日付を使用する方法はありますか?

日付コマンドの入力形式で日付を使用する方法はありますか?

コマンドの使用

$ date +%j

今年の日付(001-366)を出力しますが、入力形式で今年の日付を使用する必要があります。

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

2021-03-07これが私が2021年に出ると予想する結果です。代わりに私はそれを得た2021-05-13。何が起こっているのか、そして私が望むものを得る方法があるのか​​知っている人はいますかdate

答え1

GNUを使用して1年の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

dateこれは、1月1日から時間が追加されるという点で、上記の最初のGNUコマンドと多少似ています。

答え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

関連情報