ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 연도와 월 입력하여 달력 출력하기
    웹 Web/HTML & CSS & Javascript 2023. 2. 7. 20:02

    <시간시작> 현재의 시, 분, 초를 알려줌 (시간 계속 움직임)

    <시간멈춤> 시간 출력을 현재 시각에서 멈춤

    <달력작성> 입력한 연도와 월의 달력 출력

    quiz.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Quiz</title>
    <link href="../css/style.css" type="text/css" rel="stylesheet">
    <script type="text/javascript" src="../js/solution.js">
    </script>
    </head>
    <body>
    <h1>Calendar 및 시간표시</h1>
    <input type="text" value="2023" id="year">년 
    <select id="index">
    	<option>월 선택
    	<option value='1'>1월
    	<option value='2' selected>2월
    	<option value='3'>3월
    	<option value='4'>4월
    	<option value='5'>5월
    	<option value='6'>6월
    	<option value='7'>7월
    	<option value='8'>8월
    	<option value='9'>9월
    	<option value='10'>10월
    	<option value='11'>11월
    	<option value='12'>12월
    </select>
    <input type="button" value="달력작성" onclick="makeCalendar(year.value, index.value)"><br>
    <input type="button" value="시간시작" onclick="displayTime()" class='btn'>
    <input type="button" value="시간멈춤" onclick="stopTime()" class='btn'> 
    <br><br>
    <span id="time"></span>
    <span id="calendar"></span>
    <span id="test"></span>
    </body>
    </html>

     

    solution.js

    var clock;
    /* 시간시작 */
    function displayTime(){
    	// 1초 마다 현재시간을 갱신하는 코드
    	clock = setInterval(function(){
    		// time 번수에 저적한 값 할당하는 코드 작성
    		let time = document.getElementById('time');
    		let date = new Date().toLocaleTimeString();
            time.innerHTML = date;
    	}, 1000);
    }
    	
    /* 시간멈춤 */
    function stopTime() {
    	clearInterval(clock);
    }
    	
    /* 달력작성 */
    function makeCalendar(year, index) {
    	
    	let today = new Date(year, index-1, 1);
    		
    	let lastDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    	// 윤년 확인
    	if(year%400 == 0 || (year%4==0 && year%100!=0)) {
    		lastDays[1] = 29;
    	}
    	let lastDay = lastDays[index-1];
    		
    	let days = [];
    	let frontBlanks = today.getDay(); // 요일을 숫자로 리턴
    	let backBlanks = 7 - ((lastDay+frontBlanks)%7);
    		
    	let cal = "<table border=1><tr><td class='sun'>일</td><td>월</td><td>화</td><td>수</td><td>목</td><td>금</td><td class='sat'>토</td></tr>";
    		
    	// 배열에 앞 빈칸 넣기
    	for(let i = 0; i < frontBlanks ; i++) {
    		days.push(" ");
    	}
    		
    	// 배열에 날짜 + 뒤 빈칸 넣기
    	for(let i = 1; i <= (lastDay + backBlanks); i++) {
    		if(i > lastDay) {
    			days.push(" ");
    		} else {
    			days.push(i);
    		}
    	}
    		
    	// 달력 찍기
    	for(let i = 1; i <= days.length; i++) {
    		if(i%7 == 0) {
    			cal += "<td class='sat'>" + days[i-1] + "</td></tr>";
    		} else if(i%7 == 1) {
    			cal += "<tr><td class='sun'>" + days[i-1] + "</td>";
    		} else {
    			cal += "<td>" + days[i-1] + "</td>";
    		}
    	}
    		
    	cal += "</table>";
    	calendar = document.getElementById("calendar");
    	calendar.innerHTML = cal;
    }

     

    style.css

    @charset "UTF-8";
    table {
    	border-collapse: collapse;
    	text-align: center;
    }
    
    .sun {
    	color: red;
    }
    
    .sat {
    	color: blue;
    }

     

Designed by Tistory.