본문 바로가기
Javascript: to do list

19 Interval & Timeout 시간 만들기

by From.h 2023. 6. 1.
728x90
반응형

 

시간 표시하기

 

 

setInterval(a,00)  : a함수를 00초마다 실행하라! (alarm개념)

setTimeout(a,00) : a함수를 00초 후에 실행하라! (delay개념)

 

 

 

 

 

1. Date 현재 시간을 표시

 

 

new Date() : 오늘 날짜

 

new Date().getHours 라고 콘솔에 적어보면 시간을 불러온다.

getMinutes는 분, getSeconds는 초.

 

 

const date = new Date();

console.log(date.getHours(),date.getMinutes(),date.getSeconds());
 
 
 
 
 
 

2. Interval의 적용

 
 
 

const date = new Date();


function getClock(){
console.log(date.getHours(),date.getMinutes(),date.getSeconds());
}

setInterval(getClock, 1000);


근데, 이렇게 해두었더니 매초 실행하기는 하지만 reflesh가 되지 않고 있다.

 

해서, 함수내부에 변수를 포함시켜서 매번 재 할당되도록 해줘야겠다.

 

 
function getClock(){
    const date = new Date();
    console.log(date.getHours(),date.getMinutes(),date.getSeconds());
}

setInterval(getClock, 1000);

 

 

자, 이제 아래처럼 시간이 재생되며 표시되고 있다

 

 

 

 

3. .html 작성하기

 

 

 

폴더를 만들어 js폴더 안에 이전에 만든 app.js파일을 > greeting.js라고 이름을 바꿔주고,

clock.js파일도 해당 폴더에 하나 만들어서 연결해 두었다.

 

현재 시계 관련 코드를 clock.js에 작성하고 있다.

그리고, <h2> 태그에 id를 설정하고, js에서 불러올 것이다. 그 text는 시간표시되도록 양식을 작성했다.

이 역시 js에서 바꿀 것이다.

 

 

 

 

 

4. js 작성하기

 

처음 실행되는 순간에 1초 딜레이가 생기는 것을 볼 수 있다.

해서 앞서서 함수를 우선 한 번 실행시키도록 해준다.

그리고 시간을 문자열로 바꿔주고 콜론도 넣어준다.

이를 clock에 할당한 h2문자열에 innerText로 변경하도록 해준다.

 

 

 

 
const clock = document.querySelector("h2#clock");

function getClock(){
    const date = new Date();
    clock.innerText = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
}

getClock();
setInterval(getClock, 1000);

 

 

 

 

또, 여기서 보면 초를 나타내는 문자열이 한 자리일 때 앞에 0이 붙지 않는 것이다.

해서 padStart라는 메서드를 넣어준다. 문자열의 자릿수를 늘려주면서 앞에 0을 붙여준다.

 

string.padStart(a, b) : 문자열 string을 최대 a자릿수 문자열로 padding을 만든다는 뜻이며, 해당 문자열이 a자릿수가 아닐 경우 그 앞자리에 b를 넣어준다.

 

"1". padStart(2, "0")를 명령하면

다음과 같이 출력해 준다.

"01"

 

예시로 보면, 코드를 생성하는 데 앞자리가 비어있을 경우 xxxx와 같은 문자열로 대치하여 뽑을 수도 있겠다.

 

"hello". padStart(10, "x")

>>>

"xxxxxhello"

 

이렇게 표시해 주는 것이다.

 

 

 

해서, 각 시간, 분, 초를 각각 변수에 할당하고, String으로 감싸줘서 문자열로 먼저 변환해 주었다

그리고 그 문자열을 padStart를 통해 2 자릿수, 그리고 앞에 0을 붙이도록 해주었다.

innerText에는 바뀐 각각 변수를 수정해 주었다.

 

const clock = document.querySelector("h2#clock");

function getClock(){
    const date = new Date();
    const hours = String(date.getHours()).padStart(2,"0");
    const minutes = String(date.getMinutes()).padStart(2,"0");
    const seconds = String(date.getSeconds()).padStart(2,"0");
    clock.innerText = `${hours}:${minutes}:${seconds}`;
}

getClock();
setInterval(getClock, 1000);

 

 

 

 

BR.h

 

 

728x90
반응형

'Javascript: to do list' 카테고리의 다른 글

18 Local Storage에 저장하기  (0) 2023.06.01
17 선택자 class와 id  (0) 2023.06.01
16 Validate 유효성 체크  (0) 2023.06.01
15 Log in 로그인 화면 만들기  (0) 2023.06.01
14 ClassName과 ClassList의 차이  (0) 2023.06.01