Momentjs: Wie verhindere ich "ungültiges Datum"?

8

Ich habe den folgenden Code:

%Vor%

Manchmal gibt moment(myDate).format("L") "Ungültiges Datum" zurück, ich möchte wissen, ob es eine Möglichkeit gibt, das zu verhindern und stattdessen eine leere Zeichenfolge zurückgeben.

    
R3tep 11.03.2015, 17:14
quelle

1 Antwort

13

TL; DR

Wenn Sie herausfinden möchten, ob Sie ein gültiges Datum haben, verwenden Sie Moments isValid :

%Vor%

... die "" für die Zeichenfolge end_date verwendet, wenn das Datum ungültig ist.

Details

Hier gehen zwei sehr unterschiedliche Dinge vor.

Erstens:

0000-00-00T00:00:00 ist ein ungültiges Datum. Es gibt keinen Monat vor Januar (welcher Monat Nr. 1 in diesem Format ist), noch einen Tag vor dem ersten Tag. Also macht 0000-00-00 keinen Sinn.

0000-01-01T00:00:00 wäre gültig - und moment("0000-01-01T00:00:00").format("L") gibt gerne "01/01/0000" zurück.

Wenn Sie ein gültiges Datum verwenden (z. B. Ihr 2015-01-01T00:00:00 -Beispiel), ist der Code in Ordnung.

Zweitens:

%Vor%      

Es gibt [object String] sogar mit einem gültigen Datum zurück, so dass die if-Bedingung in meinem Fall nicht funktioniert.

Natürlich tut es das: format gibt eine Zeichenkette zurück, und Sie verwenden format , um end_date zu erhalten.

Wenn Sie wissen möchten, ob ein MomentJS-Objekt ein ungültiges Datum hat, können Sie Folgendes überprüfen:

%Vor%

Wenn Sie wissen möchten, ob ein Objekt Date ein ungültiges Datum hat:

%Vor%

... weil isNaN das Datum auf seine primitive Form umsetzt, die die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 GMT ist, und wenn ein Datum ein "ungültiges" Datum hat, die Zahl Es enthält NaN . Also isNaN(theDateObject) ist wahr, wenn das Datum ungültig ist.

    
T.J. Crowder 11.03.2015, 17:26
quelle

Tags und Links