/* TIME FORMAT */
const FULL      = "yyyy-MM-dd HH:mm:ss.SSS";    // YYYY-MM-DD HH:MM:SS.sss
const LOG       = "MM/dd HH:mm:ss.SSS";         // MMDD HHMMSS.sss
const SEC       = "yyyy-MM-dd HH:mm:ss";     	// YYYY-MM-DD HH:MM:SS
const MIN       = "yyyy-MM-dd HH:mm";       	// YYYY-MM-DD HH:MM
const DATE      = "yyyy-MM-dd";             	// YYYY-MM-DD
const YMDHMSmmm = "yyyyMMddHHmmssSSS";      	// YYYYMMDDHHMMSSmmm
const YMDHMSmm  = "yyyyMMddHHmmssSS";       	// YYYYMMDDHHMMSSmm
const YMDHMS    = "yyyyMMddHHmmss";         	// YYYYMMDDHHMMSS
const YMD       = "yyyyMMdd";               	// YYYYMMDD
const TIME      = "HH:mm:ss.SSS";          	    // HH:MM:SS.sss
const TIME_SEC  = "HH:mm:ss";               	// HH:MM:SS
const TIME_MIN  = "HH:mm";                  	// HH:MM

const weekKorName = ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"];
const weekKorShortName = ["일", "월", "화", "수", "목", "금", "토"];
const weekEngName = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
const weekEngShortName = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
const monthEngName = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
const monthEngShortName = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

Date.prototype.format = function (f) {
    if (!this.valueOf()) return " ";

    var d = this;

    return f.replace(/(YYYY|yyyy|YY|yy|MM|MES|MEL|DD|dd|WKS|WKL|WES|WEL|HH|hh|mm|ss|SSS|A\/PK|A\/PE)/gi, function ($1) {
        switch ($1) {
            case "YYYY": case "yyyy": return d.getFullYear();           // 년 (4자리)
            case "YY": case "yy": return (d.getFullYear() % 1000).zf(2);// 년 (2자리)
            case "MM": return (d.getMonth() + 1).zf(2);                 // 월 (2자리)
            case "MES": return monthEngShortName[d.getMonth()];         // 월 (짧은 영어)
            case "MEL": return monthEngName[d.getMonth()];              // 월 (긴 영어)
            case "DD": case "dd": return d.getDate().zf(2);             // 일 (2자리)
            case "WKS": return weekKorShortName[d.getDay()];            // 요일 (짧은 한글)
            case "WKL": return weekKorName[d.getDay()];                 // 요일 (긴 한글)
            case "WES": return weekEngShortName[d.getDay()];            // 요일 (짧은 영어)
            case "WEL": return weekEngName[d.getDay()];                 // 요일 (긴 영어)
            case "HH": return d.getHours().zf(2);                       // 시간 (24시간 기준, 2자리)
            case "hh": return ((h = d.getHours() % 12) ? h : 12).zf(2); // 시간 (12시간 기준, 2자리)
            case "mm": return d.getMinutes().zf(2);                     // 분 (2자리)
            case "ss": return d.getSeconds().zf(2);                     // 초 (2자리)
            case "SSS": return d.getMilliseconds().zf(3);               // 밀리초 (3자리)
            case "A/PK": return d.getHours() < 12 ? "오전" : "오후";    // 오전/오후 구분
            case "A/PE": return d.getHours() < 12 ? "AM" : "PM";        // 오전/오후 구분
            default: return $1;
        }
    });
};

String.prototype.string = function (len) { var s = "", i = 0; while (i++ < len) { s += this; } return s; };
String.prototype.zf = function (len) { return "0".string(len - this.length) + this; };
Number.prototype.zf = function (len) { return this.toString().zf(len); };

 

 

// 2021-01-05 17시 56분 기준
new Date().format("MM월 DD일(WKS) A/PK hh시 mm분");
"01월 05일(화) 오후 5시 56분"

new Date().format(TIME_MIN);
"17:56"

+ Recent posts