Date
查找一年中所有星期日的日期的腳本
我想列印一年中 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 週數 ( ) 進行比較。