Date

查找一年中所有星期日的日期的腳本

  • November 13, 2019

我想列印一年中 54 個星期日的日期。我寫了下面的腳本,但是在輸出中我得到了一個錯誤

腳本:

req_date=`date +%m%d%Y`

for i in {1..54}

do
  NEXT_DATE=$(date +%m%d%Y -d "$req_date +  7*$i day")
  echo "$NEXT_DATE"
done

輸出

+ for i in '{1..54}'
++ date +%m%d%Y -d '11132019 +  7*32 day'
date: invalid date ‘11132019 +  7*32 day’
+ NEXT_DATE=
+ echo ''

+ for i in '{1..54}'
++ date +%m%d%Y -d '11132019 +  7*33 day'
date: invalid date ‘11132019 +  7*33 day’
+ NEXT_DATE=
+ echo ''

+ for i in '{1..54}'
++ date +%m%d%Y -d '11132019 +  7*34 day'
date: invalid date ‘11132019 +  7*34 day’
+ NEXT_DATE=
+ echo ''

+ for i in '{1..54}'
++ date +%m%d%Y -d '11132019 +  7*35 day'
date: invalid date ‘11132019 +  7*35 day’
+ NEXT_DATE=
..

有人可以幫我弄這個嗎 ?

這是您的腳本已更正。

  • 正確設置req_date dd/mm/yyy 和下週日
  • 在日期偏移量計算中使用 bash 語法
  • 在索引 0 而不是 1 處開始循環,因此在 53 而不是 54 處結束循環。
req_date=`date +%m/%d/%Y -d sunday`

for i in {0..53}
do
   NEXT_DATE=$(date +%m%d%Y -d "$req_date +  $((7*i)) days")
   echo "$NEXT_DATE"
done

ksh93,

printf '%(%Y-%m-%d)T\n' '2020-01 '{1..52}'th Sunday'

會給你 2020 年所有 52 個星期日的列表(以更有用和更明確的格式,但如果你真的(真的?)想要的話,YYYY-MM-DD你可以隨時更改)。%m%d%Y

printf '%(%Y-%m-%d)T\n' '2023-01 '{1..53}'th Sunday'

對於 2023 年的 53 個。

一年不可能有 54 個星期日。

一年可能有 54,其中兩個未完成,這就是為什麼date +%W可以取 00 到 53 的值,但第 00 週或第 53 週的星期日中至少有一個在相鄰的年份(第 00 週或第 53 周可能屬於超過一年;與%V避開它並從 01 到 53 執行的 ISO 週數 ( ) 進行比較。

引用自:https://unix.stackexchange.com/questions/551911