Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 'HH:MM:SS' 형식의 시간을 초 단위로 변환하는 방법

시간을 나타내는 'HH:MM:SS' 형식의 문자열을 입력받아, 해당 시간을 초 단위 숫자로 변환하여 반환하는 함수를 작성해 보겠습니다.

예를 들어 다음과 같이 동작해야 합니다.

countSeconds('12:00:00') // 43200
countSeconds('00:30:10') // 1810

구현 아이디어

변환 로직은 매우 간단합니다. 먼저 문자열을 콜론(:) 기준으로 분리(split)하고, 각 부분을 숫자로 변환한 뒤 다음 공식으로 초를 계산합니다.

  • 1시간 = 3600초
  • 1분 = 60초

즉, (시 × 3600) + (분 × 60) + 초를 계산하면 됩니다.

예제 코드

const timeString = '23:54:43';
const other = '12:30:00';
const withoutSeconds = '10:30';

const countSeconds = (str) => {
    const [hh = '0', mm = '0', ss = '0'] = (str || '0:0:0').split(':');
    const hour = parseInt(hh, 10) || 0;
    const minute = parseInt(mm, 10) || 0;
    const second = parseInt(ss, 10) || 0;
    return (hour * 3600) + (minute * 60) + second;
};

console.log(countSeconds(timeString));
console.log(countSeconds(other));
console.log(countSeconds(withoutSeconds));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

86083
45000
37800

코드 설명

이 코드가 견고하게 동작하는 이유는 다음과 같습니다.

  • 구조 분해 할당(Destructuring) 기본값: [hh = '0', mm = '0', ss = '0']처럼 기본값을 지정했기 때문에, '10:30'처럼 초가 없는 문자열이 입력되어도 오류 없이 처리됩니다.
  • null/undefined 방어: (str || '0:0:0') 구문으로 인해 입력값이 비어 있거나 null인 경우에도 안전하게 0초를 반환합니다.
  • parseInt 진법 지정: parseInt(hh, 10)처럼 진수(radix)를 명시적으로 10으로 지정하면 예기치 않은 파싱 오류를 방지할 수 있습니다.
  • NaN 방지: 파싱 결과가 NaN일 경우 || 0이 이를 0으로 대체하여 항상 유효한 숫자를 반환합니다.

이처럼 몇 줄의 코드만으로도 다양한 형식의 시간 문자열을 안정적으로 초 단위로 변환할 수 있습니다.