역학/달력 & 만세력 개발

년도를 60갑자로 변환 - 자바스크립트

2020. 6. 17. 15:45

년도년도를 60갑자로 변환 - 자바스크립트

title

yyyy

 

 

 

 

 

HTML

    <table id = 'gogung'>
        <caption id ="title">title</caption>
        <tr>
          <td><button class ="g_btn" onclick = "preYear();">◀</button></td>
          <td><p id = 'tyear'>yyyy</p></td>
          <td><button class ="g_btn" onclick = "nextYear();">▶</button></td>
         </tr>
    </table>

css생략.

 

JavaScript

(function(){           
        let titleEle = document.getElementById('title');
        let dateEle = document.getElementById('tyear');
        let sky10 = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸'];
        let ground12 =  ['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥'];
        let skyNum; // 천간 수
        let groundNum; // 지지 수

        setYearTitle = (skyNum,groundNum) => titleEle.textContent = sky10[skyNum] + ground12[groundNum] +"년";  
        setDate = (newdate) => dateEle.textContent = newdate;
        getDate = () => Number(dateEle.textContent);
        
        preYear = () => {
            setDate(getDate()-1);
            skyNum--;
            groundNum--;
            if(skyNum < 0) { skyNum = 9;}     
            if(groundNum <0) { groundNum = 11;}
            setYearTitle(skyNum,groundNum);  
        }

        nextYear = () => {
            setDate(getDate()+1);
            skyNum = (skyNum+1)%10;
            groundNum = (groundNum+1)%12;
            setYearTitle(skyNum,groundNum);  
        }

        window.onload = () => {
            const today = new Date().getFullYear();
            setDate(today);
            
            // 서기 4년- 갑자년. 
            skyNum = (today-4) % 10;
            groundNum = (today-4) % 12;
            setYearTitle(skyNum,groundNum);
            }
    })();

 

 let sky10 = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸'];  10천간
 let ground12 =  ['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']; 12지지

 

년도를 mod10, mod12 로 계산

10와 12 최소공배수 60 / 서기 4년 - 갑자년.

 

소스코드 중 이해안가는 부분은 질문하세요