코딩배우기

JavaScript 날짜 처리 관련 정리

탁이 2021. 12. 17. 11:37
 

자바스크립트를 공부하며 날짜에 처리에 관련된 내용을 정리해 봤습니다.

현재 시간의 Date 인스턴스

new Date()

인수의 지정 시각의 Date 인스턴스

new Date(year,month,date,hours,minutes,secounds) 

월(month)의 지정은 0 시작인 것에 주의!

//2021년1월15일 22시30분 경우
new Date(2021,0,15,22,30)

new Date(value)
인수를 에포크 밀리 세컨드로 해석한 Date 인스턴스

Date()
현재 시간 문자열

인스턴스에서 다양한 값 검색

인스턴스는 에포크 타임으로 시각을 보관 유지하고 있어 캐릭터 라인이나 수치로서 꺼낼 때에 로케일이나 타임 존에 맞추어 변환됩니다.

다음은 모두 모두 로컬 시간. 

var dt = new Date();

//년
var year = dt.getFullYear();

//월
//1월이 0 이므로 더하기1을 해줍니다
var month = dt.getMonth()+1;

//일
var date = dt.getDate();

//요일
//일요일이 0, 토요일이 6 이므로 배열로 텍스트로 변환
dateT = ["일","월","화","수","목","금","토"];
var day = dateT[dt.getDay()];

//시
var hours = dt.getHours();

//분
var minutes = dt.getMinutes();

//초
var seconds = dt.getSeconds();

인스턴스에 다양한 값 설정

규정치의 범위를 초과하면 이월됩니다 예를 들어, setMonth로 12를 설정하면 0이 됩니다 (11이 12월이므로 0은 1월)
반대로 규정치의 범위를 밑돌면 돌아온다. setMonth로 -1을 설정하면 10이 됩니다
이것은 날짜의 덧셈 감산에 이용됩니다

var dt = new Date();

//년
dt.setFullYear(2015);

//월
//1월이0、12월이11。
dt.setMonth(10);

//일
dt.getDate(30);

//요일
//일요일이0、土요일이6。
dt.getDay(1)

//시
dt.getHours(21);

//분
dt.getMinutes(30);

//초
dt.getSeconds(15);

날짜 추가 빼기

달의 가산이나 감산, 더 나가서 일자의 가산 감산은 달에 의해 일수가 달라질 수 있기 때문에 단순하게 계산하는 것은 어려우나 set계의 프로퍼티를 사용해 계산하면 간단하게 할 수 있습니다.

달, 일, 시간, 분을 더하거나 뺴기만 하면 됩니다.

var dt = new Date();

//3개월후
dt.setMonth(dt.getMonth() + 3);

//3개월전
dt.setMonth(dt.getMonth() - 3);

//3일후
dt.setDate(dt.getDate() + 3);

//3시간후
dt.setHours(dt.getHours() + 3);

//3분후
dt.setMinutes(dt.getMinutes() + 3);

날짜 차이

getTime()으로 에포크 밀리 세컨드를 취득해 뺀 값을 냅니다. 그것을 나누어 변환합니다. 소수를 반올림할지 잘라낼지는 그때 그때 결정.

연, 주, 일, 시, 분, 초, 밀리초의 경우.

var diff = dst.getTime() - src.getTime();
//초
var second = diff/1000;

//분
var minute = diff/1000*60;

//시
var hour = diff/1000*60*60;

//일
var day = diff/1000*60*60*24;

//년
var day = diff/1000*60*60*24*365;

 

Date 클래스의 정적 속성

new라든지 하지 않아도 사용할 수 있는 프로퍼티.

now()
현재 시간의 에포크 밀리 세컨드를 돌려줍니다.

parse(string)
인수 문자열을 구문 분석하고 에포크 밀리초를 반환합니다.

비교하다

epoch 초를 
객체 를 getTime()으로 비교하여 비교할 때 크기는 날짜 비교이지만 == 및 ===는 객체 자체 비교입니다.

if(date1.getTime() > date2.getTime(){

}

기타

날짜를 취급한다면 moment.js가 편리합니다.