2017-06-02 7 views
0

Ich habe eine Eingabe Datum String wie so "30/09/1992", und ich fand diesen Code, um meine Bedürfnisse zu entsprechen. PFB der Code.Javascript-Datum-Konvertierung schlägt nicht fehl

var input1 = "30/09/1992"; 
var isVaidDate = false; 
var actualDate = ""; 
try{ 
var pattern = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/; 
var arrayDate = input1.match(pattern); 
var actualDate = new Date(arrayDate[3], arrayDate[2] - 1, arrayDate[1]); 
var isVaidDate = typeof dt.getMonth === 'function'; 
}catch(e){var output1 = false;} 
print(isVaidDate); 
print(actualDate); 

Der obige Code funktioniert gut, aber wenn ich die Eingabe als „31/09/1992“ oder „40/09/1992“ Ich ungültiges Datum, aber ich die unten Ausgabe erhalten kommen erwarten gesetzt.

für "31/09/1992":

true 
Thu Oct 01 1992 00:00:00 GMT+0530 (India Standard Time) 

für "40/09/1992":

true 
Thu Oct 10 1992 00:00:00 GMT+0530 (India Standard Time) 

Wie soll ich das bekommen scheitern, wenn ich diese beiden Strings übergeben. Vielen Dank. Auch das, was vor sich geht und warum es hat nicht scheitern, wäre auch nützlich sein :)

+1

Sie müssen manuell überprüfen, ob '+ arrayDate [3]! == date.getFullYear() || + arrayDate [2]! == date.getMonth() || ' – Rajesh

+1

Ich hatte dieses Problem. Obwohl nicht düpsen, werden Sie Hilfe von diesem Beitrag erhalten: https://codereview.stackexchange.com/questions/109765/javascript-date-validation – Rajesh

+0

@Rajesh Danke Ich habe einige Änderungen an den Code, den Sie gaben, auf die unten zu hinzufügen Zeilen zu dem bereits vorhandenen Code, funktioniert es wie erwartet. Ich habe getMonth() + 1 hinzugefügt, da der Index für diese Funktion allein bei 0 beginnt 'var valid = + arrayDate [3] === actualDate.getFullYear() && + arrayDate [2] === actualDate.getMonth() + 1 && + arrayDate [1] === actualDate.getDate(); Drucken (gültig); ' –

Antwort

1

dieses Beispiel können Sie helfen:

var dateString = 'Mon Jun 24 2013 05:30:00 GMT+0530 (India Standard Time)'; 
var myDate = new Date(dateString); 
var final_date = myDate.getDate()+"-"+(myDate.getMonth()+1)+"-"+myDate.getFullYear(); 

hier können Sie jede Variable als Tag, Monat und Jahr überprüfen.

+0

Ein bisschen spät, sorry, ich habe diese Antwort verpasst, Danke, es hat funktioniert! –