날짜 데이터에서 연도가 '19'처럼 두 자리 숫자로만 표현되어 있을 때, 이것이 1900년대인지 2000년대인지 어떻게 판단할 수 있을까요? 이럴 때 삼항 연산자(ternary operator)를 사용하면 특정 조건에 따라 올바른 세기를 손쉽게 결정할 수 있습니다.
예제 코드
다음은 기준 연도 값을 정해두고, 그보다 큰 연도에는 2000년대 접두사를 붙이는 방식으로 세기를 판별하는 코드입니다.
const yearRangeValue = 18;
const getCorrectCentury = dateValues => {
var [date, month, year] = dateValues.split("-");
var originalYear = +year > yearRangeValue ? "20" + year : "18" + year;
return new Date(date + "-" + month + "-" + originalYear).toLocaleDateString('en-GB')
};
console.log(getCorrectCentury('10-JAN-19'));코드 설명
yearRangeValue = 18: 세기를 구분하는 기준값입니다.dateValues.split("-"): 날짜 문자열을 하이픈(-) 기준으로 분리하여 일, 월, 연도를 각각 추출합니다.+year > yearRangeValue: 연도를 숫자로 변환한 뒤 기준값과 비교합니다. 18보다 크면 "20"을 붙여 2000년대로, 그렇지 않으면 "18"을 붙입니다.toLocaleDateString('en-GB'): 최종적으로 영국식(DD/MM/YYYY) 형식의 날짜 문자열을 반환합니다.
실행 방법
위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo300.js라고 가정합니다.
출력 결과
프로그램을 실행하면 콘솔에 아래와 같은 결과가 출력됩니다.
PS C:\Users\Amit\javascript-code> node demo300.js 1/10/2019
'10-JAN-19'처럼 두 자리 연도만 포함된 날짜 문자열이 자동으로 올바른 세기로 해석되어, 완전한 연도 형식인 1/10/2019로 변환된 것을 확인할 수 있습니다. 이처럼 삼항 연산자 하나만으로도 모호한 2자리 연도 데이터를 안정적으로 처리할 수 있습니다.