Javascript - Date 시계 만들기

 이번 글에서는 이전에 학습한 Javascript의 Date() 객체를 활용해서 문자 시계(Text Clock)를 만들어 보겠습니다. 자바스크립트의 내장 객체인 Date와 타이머 함수인 setInterval()을 사용하면 년, 월, 일, 시간을 보여주는 시계를 만들 수 있습니다.

시계(Clock)

문자 시계(Text Clock) 만들기

 화면에 날짜와 시간을 표시하기 위해서는 Date객체의 날짜 및 시간 데이터 값을 가져오는 함수가 필요하고 일정 시간을 주기로 화면에 보이는 값을 갱신하기 위해서는 setInterval() 함수를 사용합니다. 이렇게 Date 객체의 날짜 및 시간 제공 함수와 특정 주기 반복 실행 함수를 가지고 쉽게 문자 시계(Text Clock)를 만들 수 있습니다.

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>문자 시계(Text Clock)</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="">
    <style>
        .frame {
            display: inline-block;

            padding: 8px;

            border-radius: 8px;
            background-color: #000000;
        }

        .clock {
            color: #ffffff;
            font-family: 'Roboto', sans-serif;
            text-align: center;
            box-sizing: border-box;
        }

        .large_text {
            font-size: 75px;
        }

        .small_text {
            font-size: 20px;
        }

        .date_box {
            font-size: 15px;
        }

        @keyframes blink {
            50% {
                opacity: 0.0;
            }
        }

        .colon {
            font-size: 55px;
            vertical-align: text-bottom;
            animation: blink 1s step-start 0s infinite;
        }
    </style>
</head>

<body>
    <div class="frame">
        <div class="clock">
            <div class="time_box">
                <span id="hours" class="large_text"></span>
                <span class="colon">:</span>
                <span id="minute" class="large_text"></span>
                <span id="seconds" class="small_text"></span>
            </div>
            <div class="date_box">
                <span id="year"></span>
                <span>.</span>
                <span id="month"></span>
                <span>.</span>
                <span id="date"></span>
                <span id="day"></span>
            </div>
        </div>
    </div>
    <script>
        const watchClock = () => {
            function leftPad(number) {
                if (number < 10) {
                    return `0${number}`;
                }

                return `${number}`;
            };

            function setText(selector, text) {
                const targetElement = document.querySelector(selector);

                if (!targetElement) {
                    return;
                }

                targetElement.innerText = text;
            };

            function getDayText(index) {
                const days = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'];
                return days[index];
            };

            const present = new Date();


            const hour = leftPad(present.getHours());
            const minute = leftPad(present.getMinutes());
            const seconds = leftPad(present.getSeconds());

            setText('#hours', hour);
            setText('#minute', minute);
            setText('#seconds', seconds);

            const year = present.getFullYear();
            const month = leftPad(present.getMonth() + 1);
            const date = leftPad(present.getDate());
            const day = getDayText(present.getDay());

            setText('#year', year);
            setText('#month', month);
            setText('#date', date);
            setText('#day', day);
        };

        watchClock();

        const clockInterval = setInterval(watchClock, 1000);
    </script>
</body>

</html>

 

 예제로 작성한 코드는 첨부파일로도 제공하고 있습니다. 위의 코드를 가져다가 사용하시는게 불편하시다면 첨부파일을 다운로드해서 사용하시면 됩니다.

 

clock.html
0.00MB

 예제 코드 내용 중 자바스크립트와 관련 된 내용을 설명하면 아래와 같습니다.

 

- watchClock(): Date 객체를 만들어서 날짜 및 시간 데이터를 가져와 화면에 그립니다.

- leftPad(): 문자 형식을 맞추기위해 1자리 수의 값을 입력받으면 왼쪽에 '0' 문자를 채워 반환합니다.

- setText(): DOM Selector를 사용해 텍스트를 갱신합니다.

- getDayText(): index를 기준으로 요일 이름을 반환합니다.

- setInterval(): 인자로 전달 받은 함수(식)를 일정 주기로 실행시킵니다.

 

 일상에서 사용하는 실제 시계처럼 보이기 위해 CSS를 사용해 Blink 애니메이션 효과도 추가하였습니다.

See the Pen Clock by yongdae (@yongdae) on CodePen.

 

 

 

 Codepen을 사용해 예제 코드를 테스트 할 수 있도록 하였습니다.

 

참고하면 좋은 글

2021.04.17 - [프로그래밍/Javascript] - Javascript - Date 사용법 알아보기

2021.05.07 - [프로그래밍/HTML, CSS] - CSS - 깜빡이는 효과 [Blink Effect]

반응형

댓글

Designed by JB FACTORY