/**
* ***js 시간 및 날짜 형식***
*
* 템플릿 문자열은 엄격한 형식을 채택합니다. 제한을 초과하면 예외가 발생합니다. 각 형식 유형은 한 번만 나타날 수 있습니다. 예: yyyy-mm-yyyy 형식은 예외를 발생시킵니다.
*
* 연도 길이: 2/4자리
* 분기 길이: 1자리
* M월 길이: 1~2자리
* d-일 길이: 1~2자리
* H시간 길이: 24시간 형식의 1~2자리, h: 12시간 형식
* m-분 길이: 1~2자리
* 초 길이: 1~2자리
* S-밀리초 길이: 1자리 고정
* @param {날짜형 객체} 날짜
* @param {문자열 유형 템플릿 문자열} fmt
* @return 형식의 시간 및 날짜 문자열
* @author 리트
*/
함수 DateFormat(날짜, fmt){
If (arguments.length != 2) // 매개변수 번호 확인
오류 발생('인수 길이가 잘못되었습니다');
If (!date || (typeof date != 'object') || (d.constructor != Date)) // 매개변수 유효성 검증
throw Error(arguments[0] ': 유형이 날짜 유형이 아닙니다.');
If (/H /.test(fmt) && /h /.test(fmt))
throw Error("시간 형식이 잘못되었습니다. 동일한 유형은 연속으로 한 번만 나타날 수 있습니다!");
/* 템플릿 매개변수 확인, 정기 확인 방법 */
var verify = 함수(Rex){
var arr = new RegExp(Rex).exec(fmt) // 일치하는 결과 배열 가져오기
if (!arr) // 일치가 실패하면
을 반환합니다.
""를 반환합니다.
If (fmt.split(Rex).length > 2) // 동일한 유형이 여러 번 나타납니다
throw Error("fmt 형식 오류: 동일한 유형은 한 행에 한 번만 나타날 수 있습니다!");
arr[0] 반환;
};
/**
* 월, 일, 시, 분, 초에 대한 범용 매칭 교체 제공
* @param {객체 o 속성 키} r
* @param {r은 일반 객체에 해당합니다} rex
**/
var common = 함수(r, rex) {
If(len !=1 && len !=2)
throw Error("월 형식 오류: M은 1/2번만 나타날 수 있습니다.");
len == 2 ? fmt=fmt.replace(rex, o[r].length==1 ? "0" o[r] : o[r]) : fmt=fmt.replace(rex, o[r]) ;
}
var o = { // 데이터 저장 객체
"y ": date.getFullYear() "", // 연도
"q ": Math.floor((date.getMonth() 3) / 3), // 분기
"M ": date.getMonth() 1 "", // 월
"d ": date.getDate() "", // 일
"H ": date.getHours() "", // 24시간
"h ": date.getHours() "", // 12시
"m ": date.getMinutes() "", // 분
"s ": date.getSeconds() "", // 초
"S ": date.getMilliseconds() // 밀리초
}
for(var r in o) {
var rex, len, temp;
rex = 새로운 RegExp(r);
temp = verify(rex) // 결과 문자열 일치
len = temp.length // 길이
If(!len || len == 0)
계속;
if(r == "y ") {
If(len !=2 && len != 4)
throw Error("연도 형식 오류: y는 2/4번만 나타날 수 있습니다.");
len == 2 ? fmt=fmt.replace(rex, o[r].substr(2,3)) : fmt=fmt.replace(rex, o[r]);
} else if(r == "q ") {
if(len != 1)
throw Error("분기 형식 오류: q는 한 번만 나타날 수 있습니다.");
fmt=fmt.replace(rex, o[r]);
} else if(r == "h ") {
If(len !=1 && len !=2)
throw Error("시간 형식 오류: h는 1/2번만 나타날 수 있습니다.");
var h = (o[r] > 12 ? o[r]-12 : o[r]) "";
len == 2 ? fmt=fmt.replace(rex, h.length==1 ? "0" h : h) : fmt=fmt.replace(rex, h);
} else if(r == "S ") {
If(len != 1)
throw Error("밀리초 형식 오류: S는 한 번만 나타날 수 있습니다.");
fmt=fmt.replace(rex, o[r]);
// (r=="M " || r=="d " || r=="H " || r=="m " || r=="s ")
공통(r, rex)
~
}
fmt를 돌려주세요;
}
다음은 참고할 수 있는 몇 가지 시연 효과입니다.