초 단위의 시간을 일시분초(ddhhmmss) 단위로 변환하기
초 단위 시간 time을 nn일 nn시 nn분 nn초로 변환해 봅니다.
일
1일을 초 단위로 표현한다면 이렇게 표현할 수 있겠죠.
1 * 60 * 60 * 24
time을 1일로 나눈 몫이 nn일이 됩니다.
💡 Javascript의 나눗셈 연산은 실수 나눗셈이므로 Math.floor() 메소드로 소수점 아래를 버림합니다.
day = Math.floor(time / (1 * 60 * 60 * 24))
시
1시간은
1 * 60 * 60
time에서 위에서 구한 nn일의 초 단위 시간을 제외한 시간을 1시간으로 나눈 몫이 hh이 됩니다.
hour = Math.floor((time - (day * 1 * 60 * 60 * 24)) / (1 * 60 * 60))
분
마찬가지로 time에서 nn일 nn시간의 초 단위 시간을 제외한 시간을 1분으로 나눈 몫이 mm이 됩니다.
min = Math.floor((time - (day * 1 * 60 * 60 * 24) - (hour * 1 * 60 * 60)) / (1 * 60))
초
time에서 위 시간들의 초 단위를 뺀 나머지 시간이 됩니다.
sec = time - (day * 1 * 60 * 60 * 24) - (hour * 1 * 60 * 60) - (min * 1 * 60)
포맷팅하기 Formatting
구한 시간들을 바로 출력해 봅니다.
`${time}초 는 ${day}일 ${hour}시간 ${min}분 ${sec}초 입니다.`
단위별 시간을 2자리로 포맷팅하고 싶다면 padStart 메소드를 사용합니다.
💡padStart
주어진 문자를 n자리로 표현하는데, n자리보다 작다면 문자의 앞에 주어진 문자로 채웁니다.
dayStr = `${day}`.padStart(2, '0')
완성❗
function convertSecToHms(time) {
const day = Math.floor(time / (60 * 60 * 24));
const hour = Math.floor((time - (day * 60 * 60 * 24)) / (60 * 60));
const min = Math.floor((time - (day * 60 * 60 * 24) - (hour * 60 * 60)) / 60);
const sec = time - (day * 60 * 60 * 24) - (hour * 60 * 60) - (min * 60);
const dayStr = `${day}`.padStart(2, '0');
const hourStr = `${hour}`.padStart(2, '0');
const minStr = `${min}`.padStart(2, '0');
const secStr = `${sec}`.padStart(2, '0');
return {dayStr, hourStr, minStr, secStr};
} // END
728x90
'Utils' 카테고리의 다른 글
각 자릿수별로 1씩 증가하는 숫자 롤링 카운터 만들기 | HTML, Javascript, jQuery (0) | 2024.07.24 |
---|---|
0부터 1씩 증가하는 숫자 롤링 카운터 만들기 | HTML, Javascript, jQuery (0) | 2024.07.19 |
Timer(타이머) 구현하기 | HTML, Javascript, jQuery (0) | 2024.07.14 |
Custom Tab(탭) 컴포넌트 구현하기 | HTML, Javascript, jQuery (0) | 2024.07.06 |
Custom Accordion(아코디언) 컴포넌트 구현하기 | HTML, Javascript, jQuery (0) | 2024.07.04 |