2010-06-11 18 views

Odpowiedz

9

Otrzymujesz NaN wartość w IE 8 i jej pracujących w Firefox format łańcucha zmienia się wraz z przeglądarki i systemu operacyjnego.

Na przykład, w IE6 dla systemu Windows XP, łańcuch jest w następującym formacie:

Tue Dec 05 16:47:20 CDT 2006 

Ale Firefox dla Windows XP, ciąg jest

Tue Dec 05 2006 16:47:20 GMT-0500 

aby był on zgodny z w obu przeglądarkach musisz najpierw sprawdzić przeglądarkę w swoim kodzie JavaScript, a następnie podać swój ciąg dat wejściowych.

+7

Ale czy istnieje kompatybilny wspólny format dla wszystkich przeglądarek i platform? –

+1

Dla mnie działa funkcja .toJSON(). Zwraca datę w formacie, który wygląda jak "yyyy-mm-ddTxx.xx". Próbowałem w IE8 i FireFox 14. – Samuel

+0

lub użyć [moment.js] (http://momentjs.com/) –

0

ze względu na +00000. spróbuj dodać, że ostatni

var d = Date.parse("Fri Jun 11 04:55:12 2010 +0000"); 
+2

Tak, ale to działa na wszystkich przeglądarkach i platformach? –

10

Znalazłem jQuery Globalization Plugin datę analizowania działa najlepiej. Inne metody miały problemy z przeglądarkami, a takie rzeczy jak data.js nie były od dawna aktualizowane.

Nie potrzebujesz też elementu datePicker na stronie. można po prostu zadzwonić coś podobnego do przykładu podanego w docs:

$.datepicker.parseDate('yy-mm-dd', '2007-01-26'); 
4

mój problem jest rozwiązany poprzez tworzenie obiektu datę i pozwól mi go oddać znacznik czasu. Ale do tego trzeba konwertować wam ciąg w tym formacie:

year, month, date, hours, minutes, seconds,ms 

przykładem byłoby jak:

dateObj = new Date(year, month, date); 
timestamp = dateObj.getTime(); 

Działa Zapisz w IE i FF.

IE Dev Center: Date Object (JavaScript)

Mozilla Dev Network: Date

Dla przykładu byś coś takiego:

//your string 
var str = "Fri Jun 11 04:55:12 +0000 2010"; 
//maps months to integer from 0 to 11 
var monthArray = {"Jan":0, "Feb":1, "Mar":2, "Apr":3, "May":4, "Jun":5, "Jul":6, "Aug":7, "Sep":8, "Oct":9, "Nev":10, "Dec":11}; 
//get the values from the string 
var regex = /^[^ ]+ ([^ ]+) (\d{1,2}) (\d{2}):(\d{2}):(\d{2}) \+(\d{4}) (\d{4})$/; 
match = regex.exec(str); 
var month = monthArray[match[1]], 
    date = match[2], 
    hours = match[3], 
    minutes = match[4], 
    seconds = match[5], 
    ms  = match[6], 
    year = match[7]; 

//create date object with values 
var dateObject = new Date(year, month, date, hours, minutes , seconds, ms); 

var ts = dateObject.getTime(); //timestamp in ms 
+0

To! Uwaga jan zaczyna się od 0 :) – markthewizard1234

Powiązane problemy