Javascript entspricht dem .NET DateTime.Parse

Ich versuche, einen Validator zu erstellen, der mit .NETs DefaultModelBinder zusammenarbeitet und DateTime.Parse verwendet, um eine Zeichenfolge aus dem Formularbeitrag in eine DateTime-Zeichenfolge zu konvertieren. Ich möchte nicht warten müssen, bis ein Datum auf dem Server veröffentlicht wurde, um zu erkennen, dass es sich um ein schlechtes Datum handelt.

Derzeit verwendet jquery.validate den folgenden Code, um Datumsfelder zu validieren:

// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function(value, element) {
    return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
}

Aufgrund des schrecklichen Datumsparsers von Javascript gilt jedoch Folgendes:

275481/69/100089

Wird bewertet alsgültigbis 12. September 275760.

Während auf der anderen Seite:

19.11.2013

Wird bewertet alsungültig.

Natürlich verstehe ich, dass DateTime.Parse () von C # Dinge wie Kultur (Lokalisierung) und Schaltjahr berücksichtigt, und ich könnte damit leben, eine feste (US-) Kultur anzunehmen und "29.02.2013" auf dem Client zuzulassen und wirf es auf den Server (im Idealfall nicht, aber es ist akzeptabel).

Aber ich kann nicht glauben, dass jemand keine bessere Datumsüberprüfung zusammengestellt hat, um mit der DateTime.Parse () - Logik von C # zu arbeiten.

Vielleicht hat es jemand, ich habe es einfach nicht gefunden - weshalb ich hier poste.

Und ich weiß, dass ich verschiedene Möglichkeiten habe, um dies zu erreichen - von unglaublich einfach (weniger genau) bis unglaublich komplex (genauer), aber ich hoffe, dass bereits jemand diesen Weg gegangen ist und den Sweet Spot gefunden hat.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage