毎月最初の週の番号が必要です。
3月の第2週には全州が1になります。 4月の最初の週にはその前の週が5になります。
私の週は月曜日から始まる。
WEEK=$(( 1 + $(date +%V) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%V) ))
前の注意値を得るためにここから1を引くにはどうすればよいですか(該当する週が1の場合は例外があるため、気にする必要はありません)。
2月が4週間しか残っていないことを自動的に認識すればいいようです。
ベストアンサー1
私の記憶が正しい場合(ここで少し再構成した場合)、あなたの式はその月の1日に対応する週番号、今日に対応する週番号を見つけ、その違いを毎月の週番号として計算しますか?
first=$(date -d "-$(($(date +%d)-1)) days")
weekofmon=$(( 1 + $(date +%V) - $(date -d "$first" +%V) ))
これが正確で、先週の月が必要な場合は、「今日」を「7日前」(すべての場所)に変更すると、同じ日付を取得できますか?
now="7 days ago"
first=$(date -d "$now - $(($(date +%d -d "$now" )-1)) days")
weekofmon=$(( 1 + 10#$(date +%V -d "$now") - 10#$(date -d "$first" +%V) ))
date
「7日前 - 3日」などの表現を解析できる必要があります。date +%V
注番号< 10を前に0として印刷すると、8進数として解釈され、合計が08
壊れます09
。10#
bashが10進数を使用するように強制するために追加されました。
同じ月の初日を得るためのより短い方法:
first=$(date -d "$now" +"%Y-%m-01")
(形式は異なりますが、date
説明は可能です。)