2013-06-18 1 views
0

Chrome 및 IE (기타)에서 코드가 작동하도록 날짜를 인스턴스화하려고합니다. 이상적으로는 가능하다면 UDF가 아닌 간단한 문장을 찾고 싶습니다. 시간 청크가 T00:00:00으로 표시 될 때 JavaScript에서 문자열 값을 Date.parse 할 수 있습니까?Date 생성자에 관한이 javascript 디버거 출력을 설명하십시오.

다음은 Visual Studio의 직접 실행 창에 있습니다. caldate에는 백엔드 데이터베이스에서 반환 한 날짜의 문자열 표현이 들어 있습니다. 해당 문자열을 Date.parse()으로 전달하면 시간 소인 1371441600000가 반환되고 해당 시간 소인을 Date() 생성자에 전달하면 Mon Jun 17 00:00:00 EDT 2013[prototype]: Invalid Date이 반환됩니다.

?caldate 
"2013-06-17T00:00:00" 
?Date.parse(caldate); 
1371441600000 
?new Date(Date.parse(caldate)); 
Mon Jun 17 00:00:00 EDT 2013 
    [prototype]: Invalid Date 
+0

위의 내용은 Chrome에서 작동하지만 IE에서는 작동하지 않는다고 말하고 있습니까? – nnnnnn

답변

1

Invalid Date은 정상입니다. 디버거가 프로토 타입 객체 인 Date에 대해 인쇄하는 것입니다. 나는 디버거가 실제 Date 인스턴스를 제공하지 않고 proto 객체에서 toString 메소드를 호출하기 때문에 이것이라고 생각한다. 따라서 toString 메소드는 "Invalid Date"을 반환한다.

MDN documentation on Date을 읽어 보시기 바랍니다.

new Date(caldate)을 사용하면 문자열에서 Date을 만들 수 있습니다.

+0

'new Date (caldate)'는 Chrome에서 16 위, IE에서 17 위를 반환합니다. 링크를 가져 주셔서 감사합니다. – Tim

+0

시간대 문제입니다. – Tim

+0

다음은 날짜 형식의 브라우저 호환성에 대한 좋은 도표입니다 : http://dygraphs.com/date-formats.html. 그리고 이것도 역시 : http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html 당신이 사용하고있는 문자열은 현대의 브라우저에서 괜찮을 것입니다. 16 번째와 17 번째 사이의 차이점은 문자열이 UTC 또는 현지 시간으로 해석되는지 여부에 차이가있을 수 있습니다. 어쩌면 제가 제공 한 링크가 그것을 정리하는 데 도움이 될 것입니다. – Brandon

관련 문제