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="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>

  <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 birthDateStr = document.getElementById("birthDate").value.trim();
      const term = document.getElementById("termSelect").value;
      const resultDiv = document.getElementById("result");

      const datePattern = /^\d{4}-\d{2}-\d{2}$/;
      if (!datePattern.test(birthDateStr)) {
        resultDiv.innerText = "생년월일을 YYYY-MM-DD 형식으로 입력해주세요.";
        return;
      }

      const birthDate = new Date(birthDateStr);
      const currentDate = new Date(); // 오늘 날짜 자동 사용

      if (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 lawResults = "";

      if (term) {
        for (const law in 규정) {
          if (규정[law][term]) {
            const 기준정보 = 규정[law][term];
            const 기준 = 기준정보.기준;
            let 해당 = false;
            let 설명 = "";

            if (기준 === "연나이") {
              해당 = yearAge < 기준정보.최대;
              설명 = `${law} ${term} (연나이 ${기준정보.최대}세 미만): ${해당 ? "해당됨 ✅" : "해당 안 됨 ❌"}`;
            } else if (기준 === "만나이") {
              해당 = manAge < 기준정보.최대;
              설명 = `${law} ${term} (만나이 ${기준정보.최대}세 미만): ${해당 ? "해당됨 ✅" : "해당 안 됨 ❌"}`;
            } else if (기준 === "만나이범위") {
              해당 = manAge >= 기준정보.최소 && manAge <= 기준정보.최대;
              설명 = `${law} ${term} (만나이 ${기준정보.최소}세 이상 ~ ${기준정보.최대}세 이하): ${해당 ? "해당됨 ✅" : "해당 안 됨 ❌"}`;
            }

            lawResults += 설명 + "\n";
          }
        }

        if (!lawResults) {
          lawResults = "선택한 용어에 해당하는 법률 기준이 없습니다.";
        }
      } else {
        lawResults = "용어를 선택해주세요.";
      }

      const todayStr = currentDate.toISOString().split('T')[0];
      resultDiv.innerText = `오늘 날짜: ${todayStr}\n연나이: ${yearAge} / 만나이: ${manAge}\n\n${lawResults}`;
    }
  </script>
</body>
</html>

댓글 없음:

댓글 쓰기