# Date 객체의 타입
# 5.3 Date 타입
var now = new Date(); // Mon Mar 30 2015 15:46:09 GMT+0900 (KST)
var a = new Date(Date.parse("May 25, 2015"));
var a = new Date("May 25, 2015");
var a = new Date("xxx 25, 2015"); // NAN
var a = new Date(Date.UTC(2015, 0)); // 2015년 1월 1일 0시
var a = new Date(Date.UTC(2015, 1)); // 2015년 2월 1일 0시
var a = new Date(Date.UTC(2015, 1, 5, 17, 55, 55)); // 2015년 2월 1일 오후 5시 55분 55초
/*
JS 이전에 존재하던 언어와 맞추기 위함이라는 설도 있고.
해당 달의 이름을 가진 배열의 인덱스와 맞추는 작업의 용이성을 위함이라고도 합니다.
['January', 'Feb'...] 인 경우, 0부터 리턴하는 것이 간결하겠지요.
*/
var a = new Date(2015, 0); // 2015년 1월 1일 0시 (지역)
var a = new Date(2015, 1, 5, 17, 55, 55); // 2015년 2월 1일 오후 5시 55분 55초(지역)
var a = Date.now(); // ECMA5, IE9 이상 지원
var a = +new Date(); // 숫자로 변환 1427698413137
// 시작시간
var start = Date.now();
// 실행시간을 잴 함수
doSomething() ;
// 끝난시간
var stop = Date.now(),
result = stop - start;
# 5.3.1 상속된 메서드
다른 참조타입 처럼 toLocaleString(), toString(), valueOf() 메서드를 오버라이드함, 반환값은 다름
- 인터넷익스플로러 8
- toLocaleString() - Thursday, February 01, 2007 12:00:00 AM
- toString() - Thu Feb 1 00:00:00 PST 2007
- 파이어 폭스 3.5
- toLocaleString() - Thursday, February 01, 2007 12:00:00 AM
- toString() - Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
- 사파리 4
- toLocaleString() - Thursday, February 01, 2007 00:00:00
- toString() - Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
- 크롬 4
- toLocaleString() - Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
- toString() - Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
- 오페라 10
- toLocaleString() - 2/1/2007 12:00:00 AM
- toString() - Thu, 01 Feb 2007 00:00:00 GMT-0800
사용자에게 표시하기에는 적당하지 않음(디버그 목적 정도)
valueOf() : 숫자값
var date1 = new Date(2007, 0, 1);
var date2 = new Date(2007, 1, 1);
alert(date1 < date2); // true
# 5.3.2 날짜 표시 메서드
- toDateString() - 날짜를 요일, 월, 일, 년 형식으로 표현 (브라우저에 따라 다름)
- toTimeString()- 날짜를 시, 분, 초, 타임존 형식으로 표현 (브라우저에 따라 다름)
- toLocaleDateString()- 날짜를 요일, 월, 일, 년 형식으로 표현 (브라우저, 지역에 따라 다름)
- toLocaleTimeString()- 날짜를 시, 분, 초, 타임존 형식으로 표현 (브라우저, 지역에 따라 다름)
- toUTCString()- 날찌를 UTC(협정 세계시) 형식으로 표현 (브라우저에 따라 다름)
# 5.3.3 날짜/시간 부속 메서드
getTime();
setTime('ms');
getFullYear();
getUTCFullYear();
setFullYear('year');
setUTCFullYear('year');
getMonth();
getMonth('month');
getUTCMonth();
setUTCMonth('month');
getDate();
getUTCDate();
setDate('date');
setUTCDate('date');
getDay();
getUTCDay();
getHours();
getUTCHours();
setHours('hours')
setUTCHours('hours');
getMinutes();
getUTCMinutes();
setMinutes('minutes');
setUTCMinutes('minutes');
getSeconds();
getUTCSeconds();
setSeconds('seconds');
setUTCSeconds('seconds');
getMilliseconds();
getUTCMilliseconds();
setMilliseconds('milliseconds');
setUTCMilliseconds('milliseconds');
getTmezoneOffset();
# 5.4 RegExp 타입
var expression = /pattern/flags;
flags
- g : 전역
- i : 대소문자 구분 안함
- m : 여러 줄
var a = /at/g; // 모든 at
var a = /[bc]at/i; // bat 또는 cat 중 처음 것. 대소문자 구분 안함
var a = /.at/gi; // at으로 끝나는 세글자. 모든. 대소문자.
메타문자 (escape 필요)
() [] {} \ ^ $ | ? * + .
// 동일
var patternl = /[bc]at/i;
var pattern2 = new RegExp("[bc]at" , "i");
var a = /\[bc\]at/; // 리터럴 패턴
var a = new RegExp("\\[bc\\]at"); // 문자
# 5.4.1 정규표현식 인스턴스프로퍼티열
- global - g 플래그가설정되었는지 나타내는불리언값
- ignoreCase - i 플래그가설정되었는지 나타내는불리언값
- lastlndex - 패턴 매칭을 어느 위치에서 시작할지 나타내는 정수 값
- multiline - m 플래그가설정되었는지 나타내는불리언값
- source - 정규 표현식을 생성한 문자열
var patternl = /\[bc\]at/i;
alert(pattern.global); // false
alert(pattern.ignoreCase); // true
alert(pattern.multiline); // false
alert(pattern.lastlndex); // 0
alert(pattern.source); // "\[bc\]at"
# 5.4.2 정규 표현식 인스턴스 메서드
가장 많이 쓰이는 메서드는 그룹을 캡처할 의도로 만들어진 exec()
var text = "mom and dad and baby";
var pattern = /mom(and dad(and baby)?)?/gi;
var matches = pattern.exec(text);
alert(matches.index); // 0
alert(matches.input); // “mom and dad and baby"
alert(matches[0]); // “mom and dad and baby"
alert(matches[1]); // “ and dad and baby"
alert(matches[2]); // “ and baby"
또 다른 메서드 test(), true/false 반환
var text = "000-00-0000";
var pattern = /\d{3}-\d{2}-\d{4}/;
if (pattern.test(text)){
alert ("The pattern was matched.");
}
# 5.4.3 RegExp 생성자 프로퍼티
- input $- 마지막으로 테스트한 텍스트.
- lastMatch $& 마지막으로 일치한 문자열.
- lastParen $+ 마지막으로 일치한 캡처 그룹.
- leftContext $’ inp 니t 텍스트에서 lastMatch 앞에 있는 문자열
- multiline $* 모든 정규 표현식이 다중 행 모드(m)을 사용해야 하는지 묘현하는 불리언값. IE 미지원
- rightContext $’ input 텍스트에서 lastMatch 다음에 오는 문자열
# 5.4.4 패턴의 한계
ECMAscript의 정규 표현식은 완전히 개발된 상태. 하지만 지원하지 않는 것들 있음.
- 텍스트의 처음과 마지막에 일치하는 \A와 \Z
- 룩비하인드(룩어헤드의 반대 개념)
- 병합 클래스
- 최소 그룹 atomic group
- 유니코드지원 (한번에 한 문자를 찾는 기능은 지원합니다.)
- 이름 붙은 캡처 그룹
- s(한 줄 모드), x(공백 무시 모드)플래그
- 조건문
- 정규 표현식 주석