본문 바로가기
JavaScript & TypeScript

IE 7/8에서 Mysq timestamp/datetime값으로 Date 생성하기

by 향로 (기억보단 기록을) 2016. 8. 3.
반응형

보통 DB의 timestamp 값을 Javascript의 Date로 만들때 가장 쉽게할 수 있는 방법이 Date의 생성자에 문자열을 넣는것이다.

예를 들면 


var date = new Date('2016-08-03 12:00:00');


이렇게 생성해주면 가독성에도 좋고 (누가봐도 2016-08-03 12:00:00의 Date 값을 얻을려는것인지 알수있으니), DB의 값 그대로를 넣으면 되니 코드 작성도 편해서 생각 없이 만들었다가 IE 7/8에서 안되는 문제가 발생했다 ㅠㅠㅠ...

해당 형태의 생성자를 IE 7/8에성 지원을 안하는 문제인데 그럼 다른 방식의 생성자를 써야하게 생겼다.


아래 W3C에서 가이드하는 Date의 생성자들을 보자.



가독성의 문제가 있어 milliseconds 타입이나 dateString을 사용할수는 없고, 어쩔수없이 가장 마지막 생성자 방식을 사용하기로 하였다.

아래 코드를 보자.



코드 자체는 간단하다. 

입력받은 문자열을 " "로 split하면 2016-07-27 이라는 값과 12:00:00 이란 값으로 분리가 되고,

2016-07-27은 "-" 로 split하여 2016, 07, 27 이라는 3가지 값으로 분리,

12:00:00은 ":" 로 split하여 12, 00, 00 으로 분리시킨다.

이후에는 차례로 Date 생성자에 넣어주면 되는데, 주의 사항이 있다.

Javascript에서는 월(month)을 0부터 계산한다!!

당췌 왜그러는지 모르겠는데 어찌됐든 그러한 이유로 년/월/일 중 월은 -1을 해줘야 정상값을 얻을 수 있다.



(왜 그런거죠?? 할꺼면 다 그렇게 하던가......)


위 코드로 작성하니 깔끔하게 IE 7/8 문제가 해결되었다.


반응형