특정 달의 일수 구하기
여러분 모두 초등학교 시절 12월이 몇 일인지 알고 계셨을 거라 믿습니다. 거기에는 2월이라는 특별한 존재가 있습니다. 윤년의 2월은 29일이지만, 윤년이 아닌 해의 2월은 28일입니다. 저처럼 윤년의 법칙을 잊어버린 분들이 많을 것으로 추정됩니다. 이때 다음과 같은 방법이 유용할 것 같습니다.
var 날짜 = 새 날짜(2013, 2, 0);
날짜.getDate() // 28
날짜 = 새로운 날짜(2012, 2, 0);
날짜.getDate() // 29
Date 객체를 생성할 때 연도, 월(0~11, 0은 1월을 의미), 일의 세 가지 매개변수를 전달할 수 있습니다. day 매개변수가 0인 경우 생성된 객체는 이전 달의 마지막 날을 나타냅니다. 그러면 지난달에 몇 일이 있었는지 알 수 있습니다.
마찬가지로 이 방법을 사용하여 특정 연도가 윤년인지 확인할 수도 있습니다.
함수 isLeapYear(연도) {
새 날짜 반환(연도, 2, 0).getDate() === 29;
}
isLeapYear(2012); // 참
시간대 가져오기
date 유형의 getTimezoneOffset() 메소드는 그리니치 시간과 현지 시간의 시차를 분 단위로 가져올 수 있습니다. 예:
var 날짜 = 새로운 날짜();
var timezoneOffset = date.getTimezoneOffset(); // 중국(동8구)은 -480
-timezoneOffset / 60 // 8
얻은 시차를 60으로 나눈 후 음수 값을 취하여 시간대를 구합니다.
이 외에도 다른 방법이 있습니다. 날짜 유형의 toString()을 호출한 후 고정된 형식의 날짜 문자열을 얻을 수 있습니다.
new Date().toString(); // 2013년 3월 10일 일요일 16:41:12 GMT 0800(중국 표준시)
당연히 GMT 뒤의 800이 우리가 원하는 시간대입니다. 정규식과 일치시켜 값을 얻을 수 있습니다.
/GMT([ -]d )/.test( new Date().toString() );
var timezone = RegExp.$1; // 0800
다만, 이때 timezone 변수는 문자열이므로 숫자형으로 변환하려면 약간의 처리가 필요합니다.
실행시간 계산
특정 프로그램의 실행 시간을 어떻게 측정하나요? 방법은 매우 간단합니다. 실행 후 실행 전 시간을 현재 시간에서 빼면 결과가 나옵니다.
var startTime = new Date();
// 어떤 프로그램
console.log(new Date() - startTime);
빼기 연산을 하면 자연스럽게 강제로 변환되기 때문에 여기에서는 수동으로 날짜를 숫자로 변환할 필요가 없습니다. 이렇게 계산된 결과는 밀리초 수준으로 그다지 정확하지는 않습니다. 그러나 브라우저 측 Javascript의 경우 1밀리초 이내의 소비에 대해 걱정할 필요가 없습니다.
쿠키 삭제
정확히 말하면 Javascript를 통해 쿠키를 직접 삭제할 수는 없습니다. 세상에서 쿠키를 지우는 유일한 방법은 쿠키가 만료되도록 하여 브라우저에 내장된 메커니즘이 자동으로 쿠키를 제거하도록 하는 것입니다.
쿠키를 만료시키는 가장 간단한 방법은 만료 시간을 최소값으로 설정하는 것입니다. Javascript로 표현할 수 있는 가장 작은 날짜는 1970년 1월 1일 0:00:00입니다. new Date(0)을 통해 이러한 날짜 객체를 생성할 수 있습니다:
var cookieName = 'name'; // 쿠키 이름
document.cookie = cookieName '=' '; 만료=' 새 날짜(0).toUTCString();