<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>나이 계산기</title>
<style>
body { font-family: Arial, sans-serif; padding: 20px; }
input, select { width: 240px; padding: 5px; margin: 5px 0; }
button { padding: 6px 12px; margin: 10px 0; cursor: pointer; }
#result { margin-top: 20px; font-size: 18px; font-weight: bold; white-space: pre-line; }
</style>
</head>
<body>
<h2>연나이 / 만나이 계산기</h2>
<label>현재날짜:</label><br>
<input type="text" id="currentDate" placeholder="예: 2025-10-11"><br>
<label>생년월일:</label><br>
<input type="text" id="birthDate" placeholder="예: 2008-10-17"><br>
<label>용어 선택:</label><br>
<select id="termSelect">
<option value="">-- 용어 선택 --</option>
<option value="소년">소년</option>
<option value="아동">아동</option>
<option value="아동청소년">아동청소년</option>
<option value="어린이">어린이</option>
<option value="청소년">청소년</option>
<option value="촉법소년">촉법소년</option>
<option value="미성년">미성년</option>
</select><br>
<label>법률 선택:</label><br>
<select id="lawSelect">
<option value="">-- 법률 선택 --</option>
<option value="게임산업진흥에관한법률">게임산업진흥에관한법률</option>
<option value="도로교통법">도로교통법</option>
<option value="민법">민법</option>
<option value="소년법">소년법</option>
<option value="식품위생법">식품위생법</option>
<option value="아동복지법">아동복지법</option>
<option value="아동청소년의 성보호에관한법률">아동청소년의 성보호에관한법률</option>
<option value="음악산업진흥에관한법률">음악산업진흥에관한법률</option>
<option value="청소년기본법">청소년기본법</option>
<option value="청소년보호법">청소년보호법</option>
</select><br>
<button onclick="calculateAges()">나이 계산</button>
<div id="result"></div>
<script>
const 규정 = {
"청소년보호법": {
"청소년": { 기준: "연나이", 최대: 19 }
},
"식품위생법": {
"청소년": { 기준: "연나이", 최대: 19 }
},
"음악산업진흥에관한법률": {
"청소년": { 기준: "연나이", 최대: 19 }
},
"게임산업진흥에관한법률": {
"청소년": { 기준: "연나이", 최대: 19 }
},
"아동청소년의 성보호에관한법률": {
"아동청소년": { 기준: "만나이", 최대: 19 }
},
"청소년기본법": {
"청소년": { 기준: "만나이범위", 최소: 9, 최대: 24 }
},
"민법": {
"미성년": { 기준: "만나이", 최대: 19 }
},
"아동복지법": {
"아동": { 기준: "만나이", 최대: 18 }
},
"도로교통법": {
"어린이": { 기준: "만나이", 최대: 13 }
},
"소년법": {
"촉법소년": { 기준: "만나이범위", 최소: 10, 최대: 13 },
"소년": { 기준: "만나이", 최대: 19 }
}
};
function calculateAges() {
const currentDateStr = document.getElementById("currentDate").value.trim();
const birthDateStr = document.getElementById("birthDate").value.trim();
const term = document.getElementById("termSelect").value;
const law = document.getElementById("lawSelect").value;
const resultDiv = document.getElementById("result");
const datePattern = /^\d{4}-\d{2}-\d{2}$/;
if (!datePattern.test(currentDateStr) || !datePattern.test(birthDateStr)) {
resultDiv.innerText = "날짜를 YYYY-MM-DD 형식으로 입력해주세요.";
return;
}
const currentDate = new Date(currentDateStr);
const birthDate = new Date(birthDateStr);
if (isNaN(currentDate.getTime()) || isNaN(birthDate.getTime())) {
resultDiv.innerText = "올바른 날짜를 입력해주세요.";
return;
}
const yearAge = currentDate.getFullYear() - birthDate.getFullYear();
let manAge = yearAge;
const monthDiff = currentDate.getMonth() - birthDate.getMonth();
const dayDiff = currentDate.getDate() - birthDate.getDate();
if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) {
manAge--;
}
let lawResult = "";
if (term && law && 규정[law] && 규정[law][term]) {
const 기준정보 = 규정[law][term];
const 기준 = 기준정보.기준;
if (기준 === "연나이") {
const 최대 = 기준정보.최대;
const 해당 = yearAge < 최대;
lawResult = `${law} ${term} (${기준} ${최대}세 미만): ${해당 ? "해당됨 ✅" : "해당 안 됨 ❌"}`;
} else if (기준 === "만나이") {
const 최대 = 기준정보.최대;
const 해당 = manAge < 최대;
lawResult = `${law} ${term} (${기준} ${최대}세 미만): ${해당 ? "해당됨 ✅" : "해당 안 됨 ❌"}`;
} else if (기준 === "만나이범위") {
const 최소 = 기준정보.최소;
const 최대 = 기준정보.최대;
const 해당 = manAge >= 최소 && manAge <= 최대;
lawResult = `${law} ${term} (만나이 ${최소}세 이상 ~ ${최대}세 이하): ${해당 ? "해당됨 ✅" : "해당 안 됨 ❌"}`;
}
} else if (term || law) {
lawResult = "선택한 법률과 용어 조합에 대한 기준 정보가 없습니다.";
}
resultDiv.innerText = `연나이: ${yearAge} / 만나이: ${manAge}\n${lawResult}`;
}
</script>
</body>
</html>
댓글 없음:
댓글 쓰기