2012-10-26 14 views
19

Stosunkowo prosty javascript tutaj, nie jestem pewien, dlaczego IE mnie nienawidzi (traktuj innych jak chcesz być traktowany, jak przypuszczam).Błąd nieprawidłowej daty w przeglądarce Internet Explorer

var newDate = new Date("2012, 11, 2 19:30:00:000"); 
alert(newDate); 

To działa w Chrome i FF, ale IE Wyjścia "Nieprawidłowa data"

Fiddle mi to: http://jsfiddle.net/k6yD6/

+1

Rzeczywiście otrzymuję nieprawidłową datę również w Firefoksie (najnowsza wersja, 16.0.1). –

+2

Upewnij się, że używasz właściwie obsługiwanego formatu. To pytanie zostało zadane wiele razy wcześniej, http://stackoverflow.com/questions/3020508/ie-javascript-date-parsing-error –

+1

dla IE dateObj = new Date (rok, miesiąc, data [, godziny [, minuty [, sekundy [, ms]]]]) – Amitd

Odpowiedz

30

Ciąg znaków podany konstruktorowi daty should be an RFC2822 or ISO 8601 formatted date. W twoim przykładzie tak nie jest. Spróbuj wykonać następujące czynności:

new Date("2012-11-02T19:30:00.000Z"); 

lub przy użyciu alternate constructor: nie wydaje

new Date(2012, 11, 2, 19, 30, 0) 
+0

dziękuje, alternatywny konstruktor działa, ale pierwsza wymieniona pozycja nie jest widoczna w żadnej przeglądarce – dougmacklin

+0

@DougieBear Odpowiedź zaktualizowana - Brakowało mi wymaganego zera przed dniem –

+0

nowa data ("2012-11-02T19 : 30: 00 000Z "); Liczba milisekund może zostać pominięta, ale jeśli jest dołączona, musi być poprzedzona kropką, a nie dwukropkiem. – kennebec

7

IE wspierać milisekundę i miesiące w Numerical String. Spróbuj tego:

new Date("November 2, 2012 19:30:00"); 

lub

new Date(year, month, day, hours, minutes, seconds, milliseconds) 
+1

'nowa data (" 2 listopada 2012 19:30:00 ");' - To zaoszczędziło mi wiele bólu. – dexterb

1

Aby pracować w IE, data powinna być w odpowiednim formacie. Naprawiłem ten sam problem, używając poniższego formatu:

var tDate = new Date('2011'+"-"+'01'+"-"+'01'); //Year-Month-day 
+0

Kiedy przekazałem ten format roku na miesiąc do mojego kodu, naprawił problem ... muszę dać ci 1 up.Jednak nie potrzebowałem nowej daty, wystarczy zmienić format jako ciąg, a data pojawiła się poprawnie po stronie serwera poprzez IE 11. – Clarence

-1

Miałem ten sam problem z Internet Explorerem. W ten sposób zostałem formatowania daty i czasu na początku,

function formatDateTime(date, formatString = 'MM/DD/YYYY hh:mm A') { 
    return moment(new Date(date)).format(formatString); 
} 

problem był z new Date(). Właśnie go usunąłem, ponieważ była to już data UTC. Tak to jest właśnie,

return moment(date).format(formatString); 

ten pracował dla mnie we wszystkich przeglądarkach tym IE.

+0

OP nie wspomina o korzystaniu z biblioteki moment.js. – user2954463

Powiązane problemy