본문 바로가기
└ Java Script

[JavaScript] JavaScript 12시간 시간 변환 함수

by 짜장이누나 2014. 4. 9.

Today's mission 1.

24시 단위로 받아온 시간을 오전/오후를 붙여 12시간 단위로 만드는 함수를 작성해 보았다.



>> 소스코드


function convert12H(a) {
   
	var time = a;  // 'hh:mm' 형태로 값이 들어온다
	var getTime = time.substring(0, 2);  // 시간(hh)부분만 저장 
	var intTime = parseInt(getTime);  // int형으로 변환

	if (intTime < 12 ) {  // intTime이 12보다 작으면
		var str = '오전 ';  // '오전' 출력
	} else {  // 12보다 크면
		var str = '오후 ';  // '오후 출력'
	}
	
    // intTime이 12면 변환 후 그대로 12
	if (intTime == 12) {var cvHour = intTime;}
	// 나머지경우엔 intTime을 12로 나눈 나머지값이 변환 후 시간이 된다
	else {var cvHour = intTime%12;}
	
	// 'hh:mm'형태로 만들기
	var res = str + ('0' + cvHour).slice(-2) + time.slice(-3);  
	// return
	return res;
}



* slice(-2) : 뒤에서 2번째 자리까지 나타내는 함수



>> 결과 화면


>> 나의 사수님꼐서 주신 소수와 비교 ㅎㄷㄷ,, 


/**
 * 24시간 형식을 12시간 형식으로 변환한다.
 * validation 미구현
 * 
 * @params time {String} HH:MM 형식의 시간
 * @params options {Object}
 *			ampmLabel {Array} 오전, 오후 레이블. 기본 값은 [ '오전', '오후' ]
 * @return {String} 24시간 형식의 HH:MM 시간 문자열
 */
function convert12H(time, options) {

	var _ampmLabel = (options && options.ampmLabel) || [ '오전', '오후' ];
	var _timeRegExFormat = /^([0-9]{2}):([0-9]{2})$/;
	
	var _timeToken = time.match(_timeRegExFormat);
	if (typeof _timeRegExFormat === 'undefine') {
		// 잘못된 형식
		return null;
	}
	
	var _intHours = parseInt(_timeToken[1]);
	var _intMinutes = parseInt(_timeToken[2]);
	var _strHours12H = ('0' + (_intHours == 12 ? 12 : _intHours % 12)).slice(-2);
	
	return _ampmLabel[parseInt(_intHours / 12)] + ' ' + _strHours12H + ':' + _intMinutes;
}


console.log(convert12H('12:30'));
console.log(convert12H('11:30'));
console.log(convert12H('13:30'));
console.log(convert12H('00:30'));
console.log(convert12H('23:30'));

console.log(convert12H('00:30', {
	ampmLabel: ['AM', 'PM']
}));
console.log(convert12H('22:30', {
	ampmLabel: ['AM', 'PM']
}));





비교후 느낀점 : 내껀 허접허접왕허접 ㅠㅠㅠㅠㅠ 갈길이 멀어으어으어 절망절망왕절망......