2009-06-01 8 views

Antwort

4

Viele verschiedene Datumsformate können nur, indem sie an den Date() Konstruktor Datumsobjekte umgewandelt werden:

var date = new Date(datestring); 

Ihr Beispiel Datum aus zwei Gründen nicht funktioniert. Erstens, es hat kein Jahr. Zweitens muss vor "pm" ein Leerzeichen stehen (ich bin mir nicht sicher warum).

// Wed May 27 2009 23:00:00 GMT-0700 (Pacific Daylight Time) 
var date = new Date("2009/05/27 11:00 pm") 

Wenn die Datumsformate die Sie erhalten konsistent sind, können sie auf diese Weise beheben:

var datestring = "05/27 11:00pm"; 
var date = new Date("2009/" + datestring.replace(/\B[ap]m/i, " $&")); 
+0

Parses ohne Leerzeichen zwischen Zeit und am/pm Indikator. Wie Ihre Lösung, nur Jahr am Anfang zu setzen. Einfacher. – Joe

+0

Ich fragte mich, ob dieser Space JS-Engine-spezifisch sein könnte. Für den Datensatz wird meine Kopie von FF3 es ohne das Leerzeichen ("ungültiges Datum") nicht analysieren. –

+0

Ich habe eine enge Kontrolle über das Format des Datums, also das ist genau das, was ich suchte – Jared

0

nicht das sauberste, aber funktioniert:

var strDate = '05/27 11:00pm'; 
var myDate = ConvertDate(strDate, '2009'); 

function ConvertDate(strWeirdDate, strYear) 
{ 
    strWeirdDate = strWeirdDate.replace(/ /, '/' + strYear + ' '); 
    return new Date(strWeirdDate); 
} 

wohl trimmen wollen string zuerst auch.

3

ich die Parse-Methode der Datejs Bibliothek verwenden würde.

http://www.datejs.com/

Ich habe versucht, Ihr Beispiel und es funktionierte gut ...

27.05 23.00

Mittwoch, 27. Mai 2009 11.00.00

+0

Ich schaute auf diese Möglichkeit, aber ich wollte nicht die gesamte datejs Bibliothek nur für diese eine Funktion enthalten. – Jared

+0

Datejs ist nett, wenn Sie sehr wenig Kontrolle über Datumsformate haben (sagen wir, benutzerdefinierte Daten, Freitextdaten). Es ist nicht einmal so eine große Bibliothek, wenn Ihr Web-Host die Komprimierung unterstützt - nur etwa 7K gziped. –

0

Nur eine weitere Option, die ich schrieb:

DP_DateExtensions Library

Es hat eine Datum/Zeit-Analyse-Methode - übergeben Sie eine Maske und es wird die Eingabe validieren und ein Datenobjekt zurückgeben, wenn sie übereinstimmen.

Unterstützt auch Datum/Uhrzeit Formatierung, Datum Mathe (add/subtract Datum Teile), Datum zu vergleichen, Spezialität Datum Parsing, etc. Es ist liberal Open Source.

Verwandte Themen