자바스크립트(JavaScript) | 날짜 유효성 검사(윤달 포함) YYYYMMDD, YYYY-MM-DD


자바스크립트(JavaScript) | 날짜 유효성 검사(윤달 포함) YYYYMMDD, YYYY-MM-DD

윤달을 포함한 날짜의 유효성 검사




input : YYYYMMDD or YYYY-MM-DD

output : true or flase


function isValidDate(yyyymmdd) {

	var r = true;

	try {

		var date = [];
		if (yyyymmdd.length == 8) {

			date[0] = yyyymmdd.substring(0, 4);
			date[1] = yyyymmdd.substring(4, 6);
			date[2] = yyyymmdd.substring(6, 8);

		} else if (yyyymmdd.length == 10) {
			date = yyyymmdd.split("-");
		}

		var yyyy = parseInt(date[0], 10);
		var mm = parseInt(date[1], 10);
		var dd = parseInt(date[2], 10);

		var dateRegex = /^(?=\d)(?:(?:31(?!.(?:0?[2469]|11))|(?:30|29)(?!.0?2)|29(?=.0?2.(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(?:\x20|$))|(?:2[0-8]|1\d|0?[1-9]))([-.\/])(?:1[012]|0?[1-9])\1(?:1[6-9]|[2-9]\d)?\d\d(?:(?=\x20\d)\x20|$))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\x20[AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;

		r = dateRegex.test(dd + '-' + mm + '-' + yyyy);

	} catch (err) {
		r = false;
	}

	return r;

}

isValidDate('20250228');
true

isValidDate('2025-02-28');
true

isValidDate('20250229');
false

isValidDate('2025-02-29');
false

댓글

이 블로그의 인기 게시물

맥(Mac) | 마우스 휠(스크롤) 반전, Scroll Reverser 설치

OpenLayers | 2. 오픈레이어스(OpenLayers) 배경지도 추가(Google, OpenStreetMap(OSM), Vworld, Naver, Daum(Kakao))

웹(Web) | Request 파라미터(parameter) JavScript에서 암호화(Encryption) Java에서 복호화(Decryption), base64