bash에서 지난주 번호 가져오기

bash에서 지난주 번호 가져오기

해당 달의 이전 주의 번호가 필요합니다.

3월 둘째 주에 이전 주는 1이 됩니다. 4월 첫째 주에 이전 주는 5가 됩니다.

나의 일주일은 월요일부터 시작된다.

WEEK=$(( 1 + $(date +%V) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%V) ))

이전 주를 얻기 위해 여기에서 1을 빼려면 어떻게 해야 합니까(주가 1이면 예외가 있으므로 신경 쓸 필요가 없습니다).

4주만 남은 2월도 자동으로 인식되면 좋을 것 같습니다.

답변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일"과 같은 표현을 구문 분석할 수 있는지 여부에 달려 있습니다. 앞에 0이 붙은 주 번호 < 10을 인쇄합니다. 이로 인해 8진수, 줄바꿈 및 date +%V로 해석됩니다 . bash가 숫자를 십진수로 사용하도록 하려면 를 추가하세요 .080910#

같은 달의 첫날을 얻는 조금 더 짧은 방법은 다음과 같습니다.

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

(형식은 다르지만 date해석할 수 있어야 합니다.)

관련 정보