테스트 사이트 - 개발 중인 베타 버전입니다

난감~ 달력의 1주 2주차 결정하는 방법

· 7년 전 · 16306 · 1

매월 1,3주 일요일 이라고 하면 당연히

그달의 1일이 있는 주부터 첫주 가 되는줄 알았는데..

아니었다. .ㅠㅠ (왜 나만 몰랐을까?)

 

정리하자면 

1) 한주의 시작은 월요일이다.. 일요일이 아니다.

2) 1일이 월, 화, 수, 목 중에 있다면 첫째 주
3) 1일이 금, 토, 일 중에 있다면 전달의 마지막 주

 

 

이 사항은 KS X ISO 8601에 구분하는 기준으로

 ‘어떤 월의 날짜가 그 주간의 과반수를 차지하고 있는가’로, 그 달 1일이 속한 주의 날짜가 4일 이상 일 경우 그 달의 첫째 주가 된다고 나와있다고 한다..

그러므로

2943640179_1521087090.063.png 

-> 4월1일은 전달의 마지막주(3월의 5번째주) 

 

2943640179_1521087144.4127.png 

-> 2월4일은 2월의 첫번째 주 일요일 (월요일이 한주의 시작이니까)

 

2943640179_1521087268.9172.png

-> 6월3일은 전달의 마지막주 이다..  (1,2,3 일이 전 달의 마지막주이므로.)

 

흠.. 이것을 왜 나는 모르고 있었을까... ㅠ

 

이공식으로 보면 3월의 1,3째주 일요일은

2943640179_1521087480.9879.png

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 내장함수를 쓰자

 

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 1개

말씀하신 KS X ISO 8601은 이름에서 보듯이 ISO8601을 그대로 국내표준으로 지정한 것입니다.
ISO8601에는 목요일 기준으로 주차를 정한다는 규정만 있습니다.

사용하신 strtotime("second wednesday",$t); 는 말그대로, 두번째 수요일입니다.
즉, 두번째 주의 수요일이면 생각하신 3월 7일이 맞지만, 두번째 수요일은 3월 14일이 됩니다.
그래서, 일반적인 표현은 몇 주차의 무슨요일 보다는 몇번째 무슨요일을 더 선호합니다. 달력에서 그대로 횟수를 세면 되니깐요.

참고 부탁드립니다.
감사합니다.

게시글 목록

번호 제목
86
83
80
79
78
77
76
75
74
71
63
62
61
60
59
57
55
49
48
47
46
41
40
33
28
24
22
19
12
9