2011-02-16 2 views
0

나는 지정된 요일에서 첫 번째 요일을 찾으려고했지만 어떤 해결책도 찾지 못했지만 strtotime ("-x days", $ time)PHP 첫 주 평일 받기

그냥 지금은 돌아가 얼마나 많은 일 계산하기 위해이 방법을 사용하고 있지만,이 $ i가의 숫자 표현입니다 어떤 식 으로든

if ($i == 0) 
    return 6; 
else 
    return $i-1; 

에 최적화 할 수 있는지, 알고 싶은 요일 (PHP의 날짜 ('w')와 동일)

또한 마지막 요일을 찾아야합니다. 하지만 난 당신이

strtotime('+'.date('w', $dateTo).'days', $dateTo); 
+0

"1st weekday"란 무엇을 의미합니까? – drudge

+0

설명을 위해 유효한 유스 케이스입니까? 2 월 20 일 (일요일)을 입력하면 21 일 (월요일)을 반환합니다. 2 월 16 일 (수요일)을 입력하면 2 월 16 일을 반환합니다. – Jonah

+0

$ jnpcl 일주일 중 첫째 주 월요일. – The87Boy

답변

2

모두 상대적인 날짜입니다. 적절한 PHP 타임 스탬프가 있다면 간단한 정수 일뿐입니다. date('w')는 타임 스탬프에서 요일 값을 추출하기위한 적절한 방법이지만, 나머지는 일반 수학으로 수행 할 수 있습니다

$today = date('w', $dateTo); 
$last_sunday = $dateTo - (86400 * $today); // same time on previous sunday 
$last_day_of_week = $dateTo + (86400 * (6 % $today)); 

strtotime() 통해 round-tripping 모든 것을보다 빠른 및 날짜 문자열 구문 분석 처벌을 초래 .

+0

덴마크에서 월요일이 월요일에 시작되기 때문에 이전에 언급 된대로 여전히 수학을 수행해야합니다. – The87Boy

+0

우물은 strtotime()을 왕복하는 것보다 빠릅니다. , 'w'는 0/sunday 기반 주를 반환합니다. 'N'은 월요일/월요일을 나타냅니다. –

+0

아, 목록에서 보았을 때 'N'을 보지 못했습니다 : o 호스트에서 PHP 5.0 만 사용하고 있으므로 'Z'만 사용할 수 있습니다. – The87Boy

2

relative formatstrtotime()를 사용하여 시도 할 수있다 생각합니다. 이 같은 것이 작동해야합니다. 첫 번째 평일은 strtotime('monday', $relativeTime);이고 마지막 요일은 strtotime('friday', $relativeTime);입니다.