난감~ 달력의 1주 2주차 결정하는 방법 > 개발자 메모장

개발자 메모장

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

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

본문

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

 

 

추천
0

댓글 1개

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

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

참고 부탁드립니다.
감사합니다.
전체 30 |RSS
개발자 메모장 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT