2013-11-21 5 views

답변

2

우승자는 다음과 같습니다

var date = new Date(
    jsonDate 
    .replace("T"," ") 
    .replace(/-/g,"/") 
); 

그 IE8에서 크롬, NaN가에 IE와 FX와 크롬

Live Demo

var jsonDate = "2013-11-09T00:00:00"; 

오전 1 작동 하나이기 때문에

, Fx에서 확인 :

크롬, IE8에서 NaN의에서 681,613,210

오전 1시 OK FX는의 :

date = new Date(jsonDate.replace("T"," ")); 
window.console&&console.log("Without T "+date); 
: 크롬, IE8에서 NaN의 FX는 잘못된 날짜

var date = new Date(jsonDate) 
window.console&&console.log("Without parse "+date); 

OK


, 크롬에서 OK OK IE8에서, FX는에서 확인 :

date = new Date(jsonDate.replace("T"," ").replace(/-/g,"/")); 
window.console&&console.log("Without T and dash "+date); 

UPDATE - 서식 :

크롬에서

하고 .split ("") 및 걸릴 멀리 얻을 수 FX 처음 4 개 항목,하지만 IE에서 당신은 Sat Nov 9 00:00:00 UTC+0100 2013이있을 것이다 - 그리고 toLocaleString 내 상자에 11/9/2013 12:00:00 AM을 제공

var dayNames = ["Sun","Mon","Tues","Wed","Thu","Fri","Sat"], 
    monthNames= ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"], 
    pad=function(str) {return ("0"+str).slice(-2);} 
function formatDateStr(dStr) { 
    var date = new Date(dStr.replace("T"," ").replace(/-/g,"/")); 
    // Sat Nov 09 2013 
    return dayNames[date.getDay()]+ 
    " "+monthNames[date.getMonth()]+ 
    " "+pad(date.getDate())+ 
    " "+date.getFullYear(); 
} 
window.console&&console.log(formatDateStr("2013-11-09T00:00:00")); 
+0

"T"를 대체하는 이유는 무엇입니까? – Saturnix

+0

당신 말이 맞아요 ... 나는 내가 얼마 전에 한 일과 혼동 스럽다고 생각합니다. – mplungjan

+0

@mplungjan을 이제 완벽하게 점검하겠습니다. – Prateek

1
var d = "2013-11-09T00:00:00"; 
new Date(Date.parse(d)); 
+0

하나 이상의 브라우저에서 테스트하십시오 – mplungjan

+0

@mplungjan - 최신 FF 및 크롬에서 작동합니다. 덜 위험 할 수 있습니까? –

+0

IE를 시도하십시오 - 아직도 몇 백만 IE8 사용자가 있습니다. 날짜 형식을 지원하는 브라우저에는 Date.Parse가 필요하지 않으며 IE는 IE를 종료합니다. 내 대답을 읽고 내가 의미하는 바를 보자. – mplungjan

관련 문제