2025년 7월 12일 토요일

연나이/만나이

<!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>

댓글 없음:

댓글 쓰기