개발 Q&A

제목 자바 스크립트에서 날짜 데이터 처리 하면 nan 이 나와서 문제 발생 ㅠ,ㅠ
글쓴이 AMKORJS 작성시각 2014/07/14 14:07:14
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 16739   RSS
function parseDate(strDate) {
	var _strDate = strDate;
	
	var _dateObj = new Date(_strDate);
	
	if (_dateObj.toString() == 'Invalid Date' || _dateObj.toString() == 'NaN') {
	  
		_strDate = _strDate.split('.').join('-');
		_dateObj = new Date(_strDate);
		
		
	}
	if (_dateObj.toString() == 'Invalid Date' || _dateObj.toString() == 'NaN') {
		var _parts = _strDate.split('/');
    var _dateParts = _parts[0];
		
		_dateObj = new Date(_dateParts);
 
    if(_dateObj.toString() == 'NaN'){
      
      var _strDates = _strDate.split('-');
      
      _dateObj = new Date(_parts);
    }
    alert(_dateObj);
		if (_parts.length > 1) {
		  
			var _timeParts = _parts[1].split(':');
			_dateObj.setHours(_timeParts[0]);
			_dateObj.setMinutes(_timeParts[1]);
			if (_timeParts.length > 2) {
				_dateObj.setSeconds(_timeParts[2]);
			}
		}
	}
 
	return _dateObj;
} 
 
 
function reverse_counter(){
  today = new Date();
  start_d_day = parseDate("2014-07-10/10:40"); // 위에 있는 parseDate 함수​로 가게된다.  
  생략.....




 
 

PHP DATE 함수 결과값과 자바스크립트 DATE 함수 결과값이 달라서 

파이어폭스 와 크롬에서는 Invalid Date ,  익스에서는 NaN​ 로 변환되어서 나오는데

 그래서 따로 ​Invalid Date 나오게 되면 parseDate 라는 함수를 만들어서 알맞게 자바스크립트식 DATE 함수로 변환하게 했습니다만 ㅠ,ㅠ

 문제는 익스 에서 NaN출력되었을때 처리하는 방법을 잘 모르겠네요 ㅠ,ㅠ

 이것은 어떻게 해야하나요 ? 

 인터넷 뒤져봐도 NaN  처리 할수 있는 함수가 안보이네요 ㅠ,ㅠ​

 다음글 multi select 박스 저장관련 문의 (4)
 이전글 웹폰트 사용하고 페이지 접속시 글자가 변하는 현상 문제... (3)

댓글

AMKORJS / 2014/07/14 14:28:41 / 추천 0

function parseISO8601(dateStringInRange) {
    var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
        date = new Date(NaN), month,
        parts = isoExp.exec(dateStringInRange);

    if(parts) {
      month = +parts[2];
      date.setFullYear(parts[1], month - 1, parts[3]);
      if(month != date.getMonth() + 1) {
        date.setTime(NaN);
      }
    }
    return date;
  }


방법 하나 찾았는데 ... 이것은 몇분 몇초까지는 지원되지 않네요 ㅠ,ㅠ 고칠려해도 무슨내용인지 모르겠고 ㅠ,ㅠ
kaido / 2014/07/14 17:07:47 / 추천 0
음.. 고생 하시는데 안좋은 소식하나 전하고 갈게요.
자바스크립트의 날짜는 클라이언트의 [유저의 브라우져]시간이라서 맞지 않습니다.
일단 오늘 날짜 시간 구해 오는것 부터 php로 받아서 자바스크립트에 넘기셔야 될것 같습니다.
AMKORJS / 2014/07/14 17:50:06 / 추천 0
해결 했습니다.
 
function parseISO8601(str) {
 // we assume str is a UTC date ending in 'Z'

 var parts = str.split('T'),
 dateParts = parts[0].split('-'),
 timeParts = parts[1].split('Z'),
 timeSubParts = timeParts[0].split(':'),
 timeSecParts = timeSubParts[2].split('.'),
 timeHours = Number(timeSubParts[0]),
 _date = new Date;

 _date.setFullYear(Number(dateParts[0]));
 _date.setMonth(Number(dateParts[1])-1);
 _date.setDate(Number(dateParts[2]));
 _date.setHours(Number(timeHours));
 _date.setMinutes(Number(timeSubParts[1]));
 _date.setSeconds(Number(timeSecParts[0]));
 if (timeSecParts[1]) _date.setUTCMilliseconds(Number(timeSecParts[1]));

 // by using setUTC methods the date has already been converted to local time(?)
 return _date;
}

 
function reverse_counter(){
  today = new Date();
  start_d_day = parseISO8601("2014-07-18T17:05:00Z");  <-- 제가 구할려고 하는 시간 

생략....
kaido / 2014/07/14 19:07:57 / 추천 0
해결하셨다니 다행이네요 수고하셨어요 ^^