$date = 'some date';
$todays_week = date('W',strtotime($date));
이 코드는 월요일을 첫 번째 요일로 간주하는 주 번호를 제공합니다. 일주일을 시작일로 간주하여 주 번호를 얻고 싶습니다. 어떻게해야합니까?일요일을 시작일로 간주하여 주 번호를 얻으려면 어떻게해야합니까?
$date = 'some date';
$todays_week = date('W',strtotime($date));
이 코드는 월요일을 첫 번째 요일로 간주하는 주 번호를 제공합니다. 일주일을 시작일로 간주하여 주 번호를 얻고 싶습니다. 어떻게해야합니까?일요일을 시작일로 간주하여 주 번호를 얻으려면 어떻게해야합니까?
아시다시피 시작일을 변경하는 옵션이 없습니다. 그래서 현재 일 일요일 여부를 확인할 수 있습니다 그렇다면, 1 주 수를 증가 :
function getIsoWeeksInYear($year) {
$date = new DateTime;
$date->setISODate($year, 53);
return ($date->format("W") === "53" ? 53 : 52);
}
function getWeek($date) {
$week = date('W',strtotime($date));
$day = date('N',strtotime($date));
$max_weeks = getIsoWeeksInYear(date('Y',strtotime($date)));
if($day == 7 && $week != $max_weeks) {
return ++$week;
} elseif($day == 7) {
return 1;
} else {
return $week;
}
}
echo getWeek('2012-12-30');
가장 우아한 해결책은 입력에 하루 종일 일을 추가하는 것입니다
$todays_week = date('W', strtotime($date) + 60 * 60 * 24);
이것이 작동하지 않는 유일한 경우는 12 월 31 일이며 일요일이기도합니다. 이 경우 대답은 1을 잘못 말하는 것입니다. 이것을 확인해야합니다.
아닙니다. ISO 8601 주 숫자의 범위는 1 - 53 * *입니다. 예를 들어, 2010 년 1 월 3 일 일요일은 ISO 2009 년, ISO 주 53 일입니다. [1 월 1 일이 월요일, 화요일, 수요일 또는 목요일 인 경우 그것은 01 일입니다. 1 월 1 일이 금요일, 토요일 또는 일요일은 전년도 52 주 또는 53 일 (주 00이 없음)이며, 12 월 28 일은 항상 그 해의 마지막 주에 있습니다. "] (http://en.wikipedia.org/wiki/ISO_8601# Week_dates) – user113215
댓글 주셔서 감사합니다. +1. 나는 지난 주에 대해 확신하지 못했습니다. 53로 변경했습니다. – enenen
모든 ISO 연도에 53 주가있는 것은 아닙니다. 주 수는 다양한 요인에 따라 * 52 또는 53입니다. [ISO week date] (http://en.wikipedia.org/wiki/ISO_week_date)를 참조하십시오. 간단히 말해서, 12 월 28 일 시험은 해당 연도의 가장 높은 주 번호 (52 또는 53)를 찾아야합니다. – user113215