난감~ 달력의 1주 2주차 결정하는 방법 정보
난감~ 달력의 1주 2주차 결정하는 방법
본문
매월 1,3주 일요일 이라고 하면 당연히
그달의 1일이 있는 주부터 첫주 가 되는줄 알았는데..
아니었다. .ㅠㅠ (왜 나만 몰랐을까?)
정리하자면
1) 한주의 시작은 월요일이다.. 일요일이 아니다.
2) 1일이 월, 화, 수, 목 중에 있다면 첫째 주
3) 1일이 금, 토, 일 중에 있다면 전달의 마지막 주
이 사항은 KS X ISO 8601에 구분하는 기준으로
‘어떤 월의 날짜가 그 주간의 과반수를 차지하고 있는가’로, 그 달 1일이 속한 주의 날짜가 4일 이상 일 경우 그 달의 첫째 주가 된다고 나와있다고 한다..
그러므로
-> 4월1일은 전달의 마지막주(3월의 5번째주)
-> 2월4일은 2월의 첫번째 주 일요일 (월요일이 한주의 시작이니까)
-> 6월3일은 전달의 마지막주 이다.. (1,2,3 일이 전 달의 마지막주이므로.)
흠.. 이것을 왜 나는 모르고 있었을까... ㅠ
이공식으로 보면 3월의 1,3째주 일요일은
4일, 18일이 아니라..
11일, 25일이다..
------------------------
흠. 난리네..ㅠ
$t=strtotime('2018-03-01');
$t2= strtotime("second wednesday",$t);
echo date("Y-m-d",$t2);
로 하면 3월 두번째 수요일이 3월 7일이 아니라 3월 14일로 나온다..
위에서 정리한게 잘못된듯..
결론은
그냥
php date 내장함수를 쓰자
추천
0
0
댓글 1개

말씀하신 KS X ISO 8601은 이름에서 보듯이 ISO8601을 그대로 국내표준으로 지정한 것입니다.
ISO8601에는 목요일 기준으로 주차를 정한다는 규정만 있습니다.
사용하신 strtotime("second wednesday",$t); 는 말그대로, 두번째 수요일입니다.
즉, 두번째 주의 수요일이면 생각하신 3월 7일이 맞지만, 두번째 수요일은 3월 14일이 됩니다.
그래서, 일반적인 표현은 몇 주차의 무슨요일 보다는 몇번째 무슨요일을 더 선호합니다. 달력에서 그대로 횟수를 세면 되니깐요.
참고 부탁드립니다.
감사합니다.
ISO8601에는 목요일 기준으로 주차를 정한다는 규정만 있습니다.
사용하신 strtotime("second wednesday",$t); 는 말그대로, 두번째 수요일입니다.
즉, 두번째 주의 수요일이면 생각하신 3월 7일이 맞지만, 두번째 수요일은 3월 14일이 됩니다.
그래서, 일반적인 표현은 몇 주차의 무슨요일 보다는 몇번째 무슨요일을 더 선호합니다. 달력에서 그대로 횟수를 세면 되니깐요.
참고 부탁드립니다.
감사합니다.