/* 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"

JSON이란.

 

JavaScript Object Notation의 약자

경량의 데이터 교환 형식이라는 뜻이다.

 

데이터의 크기가 작아 XML을 대체해서 데이터 전송 등에 많이 사용한다.

 

이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다.

 

자바 스크립트 언어에 익숙한 사람이라면 다음의 규칙은 익숙할 듯 싶다.

JSON의 문법은 다음과 같다.

 

 - JSON 객체는 중괄호 블록 '{', '}' 으로 표기한다.

 - JSON 배열은 대괄호 블록 '[', ']' 으로 표기한다.

 - 속성(Key)과 값(value)은 쌍을 이룬다.

 - 속성과 값이 쌍을 이룰 때는 콜론 ':'으로 구분한다.

 - 속성이 여러개인 경우 콤마 ',' 로 구분한다.

 - 속성은 쌍따옴표 '"'로 묶어 표기하며, 값은 자료형에 따라 표기한다. 예) "name" : "장진우", "age" : 27

 

   

 

 

JSON 문법을 사용 시 주의해야 할 점 몇가지만 말해볼까한다.

 

 1. JSON은 순수 데이터 포맷이기 때문에 오직 프로퍼티만 담을 수 있다. (Method는 담지 못한다.)

 2. JSON 데이터 구성시 큰 따옴표만을 사용해야한다. (작은 따옴표는 사용불가)

 3. 콤마나 클론을 잘못 배치 할 경우, 문법 오류가 발생할 수 있다.

'공통' 카테고리의 다른 글

[공통] Proxy 설정하기 (Feat. Putty)  (0) 2021.01.05
[공통] log4j 설정 및 적용하기  (0) 2021.01.05

+ Recent posts