Bashから先週数字を取得する

Bashから先週数字を取得する

毎月最初の週の番号が必要です。

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壊れます0910#bashが10進数を使用するように強制するために追加されました。

同じ月の初日を得るためのより短い方法:

first=$(date -d "$now" +"%Y-%m-01") 

(形式は異なりますが、date説明は可能です。)

おすすめ記事