자바스크립 시계 [한국시간 고정] > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

자바스크립 시계 [한국시간 고정] 정보

자바스크립 시계 [한국시간 고정]

본문

초보인 주제에 이걸 해결할라고 너무 힘들었습니다.

공유하도록 하겠습니다.


<div id="clock">
    <div1></div1><div2></div2>
</div>

<script>
const clock = document.getElementById("clock"),
clockDate = clock.querySelector("div1"),
clockTime = clock.querySelector("div2")
     
const color = ["#D60000", "#FF6347", "#FFD700", "#32CD32", "#191970", "#8B008B"];
const whatDay = ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"];
function time(){
    const data = new Date(); // 현재 시간
    const utcNow = data.getTime() + (data.getTimezoneOffset() * 60 * 1000); // 현재 시간을 utc로 변환한 밀리세컨드값
    const koreaTimeDiff = 9 * 60 * 60 * 1000; // 한국 시간은 UTC보다 9시간 빠름(9시간의 밀리세컨드 표현)
    const koreaNow = new Date(utcNow + koreaTimeDiff); // utc로 변환된 값을 한국 시간으로 변환시키기 위해 9시간(밀리세컨드)를 더함
    let amPm = 'AM'; 
 
    let year = koreaNow.getFullYear();
    let month = koreaNow.getMonth()+1;
    let currentDate = koreaNow.getDate();
    let day = koreaNow.getDay();
 
    let hours = koreaNow.getHours(); 
    let minutes = addZero(koreaNow.getMinutes());
    let seconds =  addZero(koreaNow.getSeconds());
 
    if(hours >= 12){ 
        amPm = 'PM';
        hours = hours - 12;
    }
    
    clockTime.innerHTML = `<span>${hours}</span>:${minutes}:${seconds} ${amPm}`;
    
    if(hours < 7){
        for(let i=0; i<6; i++){
            if(hours-1 == i){
                clockTime.querySelectorAll("span")[0].style.color = color[i];
            }
        }
    } else if(hours>=7 && hours<=12){
        for(let i=0; i<6; i++){
            if(hours-7 == i){
                clockTime.querySelectorAll("span")[0].style.color = color[i];
            }
        }
    } else if(hours>=13 && hours<=18){
        for(let i=0; i<6; i++){
            if(hours-13 == i){
                clockTime.querySelectorAll("span")[0].style.color = color[i];
            }
        }
    } else if(hours>=19 && hours<=24){
        for(let i=0; i<6; i++){
            if(hours-19 == i){
                clockTime.querySelectorAll("span")[0].style.color = color[i];
            }
        }
    }
    for(let j=0; j<7; j++){
        if(day == j){
            day = whatDay[j]
        }
    }
    clockDate.innerHTML = `${year}년 ${month}월 ${currentDate}일 ${day}`
  
}
function addZero(num) { 
  let zero = ''; 
  if (String(num).length < 2) {
      zero += '0';
  }
  return `${zero}${String(num)}`;
}
 
function init(){
    time();
    setInterval(time, 1000);
}
 
init()
</script>
추천
5

댓글 8개

잘 동작합니다.
생뚱맞은 질문인데... 한수 배워야 겠습니다.
첨부한 이미지처럼 제 노트++ 에디터에서는
clockTime.innerHTML = `<span>${hours}</span>:${minutes}:${seconds} ${amPm}`;
아래단은 하일라이트가 잘못 표시되는군요.
혹시 해결책을 아실까 싶은..

@타버린나무
저도 노트뿔뿔 쓰는데 노트뿔뿔에서는 모던 js 의 벡틱(역따옴표) 이 하일라이팅을 인식하지 못합니다. 그래서 벡틱변수를 클래식변수로 바꿔야 하일라이팅 처리가 제대로 됩니다.

예를 들어서
clockTime.innerHTML = `<span>${hours}</span>:${minutes}:${seconds} ${amPm}`;
는 아래처럼
clockTime.innerHTML = "<span>" + hours + "</span>:" + minutes + ":" + seconds + amPm;

위 전체코드에는 벡틱이 두 군데 들어가 있네요.
하지만 결과물만 생각한다면 벡틱을 익히시길 권해 드려요.

참고사항입니다. https://sir.kr/g5_tip/18447
@비타주리 감사합니다.
어제 검색해보니 깃허브에 ES6의 하일라이트 적용이된 자료가 있어보이긴 한데 까막눈이라 적용은 못하고 포기했네요.
전체 5,352
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT