자바스크립트(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
댓글
댓글 쓰기