나의질문답

크롬에서 안되 ~ 크롬 var today = new Date(); 의 .getYear()

예쁜꽃이피었으면 2014. 7. 29. 23:41

검색어 : 크롬 var today = new Date(); 의 .getYear()

14세미만 계산하는 로직이

크롬에서만 안된다. 계속..

알고 보니.. 이런일도 있을수 있구나 싶다..

많은 블로그에서 찾을 수 있는 걸 보니 많이 알려진 일인가보다. 

 

http://decameron.tistory.com/12

var today = new Date();

 var year = today.getYear(); // today.getFullYear();
 var month = today.getMonth()+1;

 var day = today.getDate();

 

여기서

 

 getYear() 경우 자바스크립트 결과 값이 2014가 아니라 114을 반환하는 경우가 있다.

 

이럴 땐 getYear() 메소드 대신 getFullYear() 메소드를 사용하면 제대로 나온다.

 

 

http://blog.naver.com/sayhyub?Redirect=Log&logNo=50163153152

javascript의 날짜관련 함수 Date()의 getYear()는 1970년도 이후의 연도를 알아내는 메서드이다.
 
getYear() 함수는 자바스크립트 1.2 및 이전 버전에서 사용하던 것으로 결과 값에 한가지 문제점이 있다.
1900년~1999년 사이의 값을 계산하므로 2000년 이상에서는 잘못된 값이 리턴되게 된다.
 
예1) 1900 ~ 1999 사이의 연도
Xmas = new Date("December 25, 1995 23:15:00")
year = Xmas.getYear() // returns 95
예2) 1999년 이후의 연도
Xmas = new Date("December 25, 2000 23:15:00")
year = Xmas.getYear() // returns 100
예3) 1900년 이전의 연도
Xmas = new Date("December 25, 1800 23:15:00")
year = Xmas.getYear() // returns -100
예4) 임의의 값을 할당
Xmas.setYear(95)
year = Xmas.getYear() // returns 95 
즉, 올해는 2010년이므로 110을 반환하게 된다.
** IE 에서는 해당 버그가 나타나지 않고 정상적으로 처리되지만 파폭이나 다른 브라우저에서는 발생함.
 
 
javascript 1.3에서 추가된 getFullYear() 를 사용하도록 합세~
 
var today = new Date();
var yr = today.getFullYear(); 
http://blog.naver.com/fromyongsik?Redirect=Log&logNo=40192516343

 

IE9에서는 몰랐으나 크롬, 파이어폭스, IE10에서 발견한 Date 객체의 getYear() 메소드의 버그이다.

 *버그가 아니고 원래 그런것.

 보통

 

 var today = new Date();
 var _year = today.getYear(); // today.getFullYear();
 var _month = today.getMonth()+1;

 var _day = today.getDate();

 

 이런식으로 사용했다.

 

 getYear() 메소드의 경우 자바스크립트 해석엔진에 따라 현재 년도가 2013년임에도 113을 반환하는 경우가 있다.

 

 1900 + 113 = 2013 이런식으로 현재년도에서 1900을 뺀 값을 반환하는 것 같다.

 

 getYear() 메소드 대신 getFullYear() 메소드를 사용하자.

 


반응형