2016-06-30 2 views
2

오늘 목요일, 6 월 30 일이전 목요일, 일요일 포함하는 방법?

2016은 다음 date +%Y%m%ddate -d'last-thursday' +%Y%m%d20160623이며, date -d'next-thursday' +%Y%m%d20160707입니다 20160630입니다한다고 가정하자.

그러나 date -d'last-wednesday' +%Y%m%d20160629이고 date -d'next-wednesday' +%Y%m%d20160706입니다.

오늘 경우 오늘 날짜를 반환 {next,last}-*day포함 버전이 있습니까?

+0

나는 오늘을 포함하고있는'{next | last} - * day'의 다른 형태에 대해 알지 못합니다. 그것은 의미 론적으로 (언어 학적으로) 의미가 없습니다. 이 맥락에서 "다음"과 "마지막"은 보통의 언어로 오늘을 의미하지는 않습니다. 필요한 이유는 무엇입니까? 아마도 일부 컨텍스트 ... 당신은 항상 그 결과를 얻기 위해 간단한 사용자 정의 스크립트를 만들 수 있습니다. – lurker

+0

오늘의 요일 ('date + % w')을 확인하는 것은 어떨까요? 예를 들어 목요일이고 지난 목요일을 찾고 있다면 끝났습니다. –

답변

2

인 클루 시브 다음 평일는 오늘 목요일, 또는 다음주 목요일없는 경우 경우 today을 반환합니다 -d"Thursday" (국번없이), 및 date를 사용하여 내장된다.

그러나 date는, 그래서 여기에 더 포함하는 마지막이없는 포함 지난 주말 kludge 기능입니다 :

ilast() { a=$(date -d'today' "+%A") ; b=$(date -d"$1" "+%A") ; \ 
     [ $a != $b ] && echo -n "last " ; echo $b ; } 

테스트 (또한 ilast의 사용법을 보여줍니다) :

for d in Sun. Mon. Tue. Wed. Thu. Fri. Sat. ; do \ 
    echo -n $(ilast $d)" " ; \ 
    date -d"$(ilast $d)" "+%Y%m%d" ; \ 
done | column -t 

출력 :

last  Sunday  20160626 
last  Monday  20160627 
last  Tuesday 20160628 
last  Wednesday 20160629 
Thursday 20160630 
last  Friday  20160624 
last  Saturday 20160625 

기능은 $ Atoday에의 평일 및 $ B $ (1)에 '다른 요일 것의 평일, 않는 $ (1)오늘입니다 설정 평일. 따라서 주중 $ a$ b이 같지 않으면 (7 일 중 6 일이 다를 수 있음) "last"을 평일의 긴 이름 앞에 붙입니다.이 동일을있는 평일 $ A$ B를하는 경우, 인쇄되지 않습니다 "마지막" (일곱 중 1 일) 이후, 기본 포함하는 다음 이미 원하는 일을한다.