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

· 2018-03-15 (목) 13:16:18 · 18570 · 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일이 됩니다.
그래서, 일반적인 표현은 몇 주차의 무슨요일 보다는 몇번째 무슨요일을 더 선호합니다. 달력에서 그대로 횟수를 세면 되니깐요.

참고 부탁드립니다.
감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

개발자 메모장

30건
+
제목 글쓴이 날짜 조회
20-04-09 조회 2,478
20-01-23 조회 4,694
19-02-11 조회 3,761
19-01-28 조회 2,934
19-01-27 조회 1,952
19-01-10 조회 2,464
18-11-05 조회 2,090
18-11-05 조회 3,382
18-11-05 조회 1,868
18-04-17 조회 2,958
18-03-31 조회 7,453
18-03-29 조회 1.2만
18-03-19 조회 1,928
18-03-15 조회 3,462
18-03-15 조회 1.9만
18-03-12 조회 3,306
18-03-10 조회 2,258
18-03-04 조회 3,445
18-03-03 조회 2,142
18-02-28 조회 2,320
18-02-27 조회 3,182
18-02-26 조회 2,047
18-02-25 조회 1,975
18-02-24 조회 2,330
18-02-24 조회 2,653
18-02-23 조회 2,158
18-02-23 조회 2,502
18-02-23 조회 2,419
18-02-22 조회 2,518
18-02-22 조회 3,009