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

JavaScript에서 12시간제 시간을 24시간제로 변환하는 방법

이번 글에서는 '05:00 PM'처럼 오전/오후 표기가 포함된 12시간제 시간 문자열을 입력받아 '17:00' 형태의 24시간제 문자열로 변환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.

문제 정의

변환 대상이 되는 시간 문자열은 항상 아래와 같은 형식으로 주어진다고 가정합니다.

const timeStr = '05:00 PM';

즉, 문자열 형식은 항상 HH:MM mm으로 고정되어 있으며, 함수는 이 문자열을 가공하여 다음과 같은 24시간제 형식(HH:MM)의 결과를 반환해야 합니다.

예시

위 문자열에 대한 기대 출력은 다음과 같습니다.

const output = '17:00';

변환 로직의 핵심 규칙

12시간제를 24시간제로 바꿀 때 기억해야 할 규칙은 크게 두 가지입니다.

  • 오전(AM) 12시는 자정을 의미하므로 00으로 변환해야 합니다.
  • 오후(PM)인 경우에는 시간 값에 12를 더해 줍니다. 참고로 오후 12시(정오)는 먼저 '00'으로 바뀐 뒤 12가 더해지므로, 별도의 추가 처리 없이도 12로 올바르게 계산됩니다.

구현 코드

const timeStr = '05:00 PM';
const secondTimeStr = '11:42 PM';

const convertTime = timeStr => {
   const [time, modifier] = timeStr.split(' ');
   let [hours, minutes] = time.split(':');

   // 자정(오전 12시) 처리
   if (hours === '12') {
      hours = '00';
   }
   // 오후(PM)인 경우 12를 더함
   if (modifier === 'PM') {
      hours = parseInt(hours, 10) + 12;
   }
   return `${hours}:${minutes}`;
};

console.log(convertTime(timeStr));
console.log(convertTime(secondTimeStr));

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

17:00
23:42

동작 원리 정리

  1. split(' ')을 사용해 시간 부분('05:00')과 오전/오후 표시('PM')를 분리합니다.
  2. split(':')으로 시(hours)와 분(minutes)을 나눕니다.
  3. 시간이 '12'라면 자정 또는 정오를 의미하므로 우선 '00'으로 변경합니다.
  4. 오후(PM) 표시가 있다면 시간에 12를 더해 24시간제로 변환합니다.
  5. 템플릿 리터럴을 활용해 최종 결과 문자열을 조립한 뒤 반환합니다.

이처럼 간단한 문자열 분리와 조건 분기만으로도 12시간제와 24시간제 사이의 변환을 손쉽게 구현할 수 있습니다. 실무에서는 이 로직을 유틸리티 함수로 만들어 두면 다양한 프로젝트에서 재사용하기에 매우 유용합니다.