JavaScript에서 날짜와 시간을 얻거나 생성할 때 Date 객체를 사용합니다.
Date 객체 생성
오늘 시간을 얻기 위해서는 생성자로 Date 객체를 호출합니다. 그러면 새로운 Date 객체가 반환됩니다.
var today = new Date();
Date 시간 얻기
생성된 Date 객체의 메서드를 사용하여 시, 분, 초, 밀리초를 가져옵니다.
getHours() 메서드는 생성된 Date 객체에서 시간(0 ~ 23)을 가져옵니다.
getMinutes() 메서드는 생성된 Date 객체에서 분(0 ~ 59)을 가져옵니다.
getSeconds() 메서드는 생성된 Date 객체에서 초(0 ~ 59)를 가져옵니다.
getMilliseconds() 메서드는 생성된 Date 객체에서 밀리초(0 ~ 999)를 가져옵니다.
var todayHours = today.getHours();
var todayMinutes = today.getMinutes();
var todaySeconds = today.getSeconds();
var todayMilliseconds = today.getMilliseconds();
생성된 Date 객체로 가져온 시, 분, 초로 문자열을 만들어 출력하겠습니다.
var todayString = todayHours + "시 " + todayMinutes + "분 " + todaySeconds + "초";
console.log(todayString);
--> 15시 23분 37초
ISO 표기법으로 Date 시간을 문자열로 변환
생성된 Date 객체로 가져온 시, 분, 초, 밀리초를 ISO 8601 표기법(시간)으로 변환하겠습니다.
ISO 8601 표기법(시간)은 hh:mm:ss로 2자리 시간, 2자리 분, 2자리 초로 콜론(:)을 구분자로 표기됩니다. 또는 콜론(:) 없어 hhmmss로 표기됩니다.
밀리초는 초 뒤에 도트(.)가 추가되고 sss로 3자리로 표기됩니다.
var todayString = todayHours + ":" + todayMinutes + ":" + todaySeconds + "." + todayMilliseconds;
console.log(todayString);
--> 15:23:37.573
생성된 Date 객체에서 가져온 시간이 10시 전이거나 분이 10분 전이거나 초가 10초 전이면 2자리가 되지 않기 때문에 표기법(시간)에 적합하지 않습니다. 그리고 밀리초가 10보다 작으면 1자리이고 100보다 작으면 2자리로 3자리가 되지 않기 때문에 표기법(시간)에 적합하지 않습니다.
var todayString = todayHours + ":" + todayMinutes + ":" + todaySeconds + "." + todayMilliseconds;
console.log(todayString);
--> 15:24:1.32
그래서 시, 분, 초가 10보다 작을 경우 "0"를 추가하고 밀리초가 10보다 작을 경우 "00"를 추가하고 100보다 작을 경우 "0"를 추가해서 처리해야 합니다.
var todayString = "";
if (todayHours < 10) {
todayString += "0";
}
todayString += todayHours + ":";
if (todayMinutes < 10) {
todayString += "0";
}
todayString += todayMinutes + ":";
if (todaySeconds < 10) {
todayString += "0";
}
todayString += todaySeconds + ".";
if (todayMilliseconds < 10) {
todayString += "00";
} else if (todayMilliseconds < 100) {
todayString += "0";
}
todayString += todayMilliseconds;
console.log(todayString);
--> 15:24:01.032
시간 변환 함수 생성
Date 객체를 파라미터(Parameter) 전달받아 ISO 8601 표기법(시간)으로 문자열을 생성하는 함수입니다.
function SimpleTimeFormat(date) {
var todayString = "";
if (date.getHours() < 10) {
todayString += "0";
}
todayString += date.getHours() + ":";
if (date.getMinutes() < 10) {
todayString += "0";
}
todayString += date.getMinutes() + ":";
if (date.getSeconds() < 10) {
todayString += "0";
}
todayString += date.getSeconds() + ".";
if (date.getMilliseconds() < 10) {
todayString += "00";
} else if (date.getMilliseconds() < 100) {
todayString += "0";
}
todayString += date.getMilliseconds();
return todayString;
}
var todayString = SimpleTimeFormat(new Date());
console.log(todayString);
--> 15:24:01.032
Date 객체와 구분자를 파라미터(Parameter) 전달받아 ISO 8601 표기법(시간)으로 문자열을 생성하는 함수입니다. 구분자 여부가 전달되지 않으면 구분자인 콜론(:)을 포함해서 처리합니다.
function SimpleTimeFormat(date, separator) {
if (separator == undefined || separator == null || typeof separator != "boolean") {
separator = true;
}
var todayString = ((date.getHours() < 10) ? "0" : "") + date.getHours();
todayString += separator ? ":" : "";
todayString += ((date.getMinutes() < 10) ? "0" : "") + date.getMinutes();
todayString += separator ? ":" : "";
todayString += ((date.getSeconds() < 10) ? "0" : "") + date.getSeconds();
todayString += ".";
todayString += ((date.getMilliseconds() < 10) ? "00" : (date.getMilliseconds() < 100) ? "0" : "") + date.getMilliseconds();
return todayString;
}
var todayString = SimpleTimeFormat(new Date());
console.log(todayString);
--> 15:24:01.032
var todayString = SimpleTimeFormat(new Date(), false);
console.log(todayString);
--> 152401.032