본문 바로가기

Utils

초 단위 시간을 일시분초(ddhhmmss) 단위로 변환하기 | Javascript

초 단위 시간을 일시분초(ddmmhhss) 단위로 변환하기 ❘ Javascript

초 단위의 시간을 일시분초(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