4 Stimmen

Parse Datum, Monat und Jahr aus dem Javascript "Date" Formular

Ich verwende das folgende, damit ein Benutzer ein Datum in ein Formular eingeben kann:

Ich frage mich, ob es eine Möglichkeit gibt, den Tag, den Monat und das Jahr daraus zu extrahieren und in verschiedene Variablen zu setzen. Ich versuche dies nur mit Javascript zu machen, nicht mit PHP.

Die 3 Variablen wären Ganzzahlen.

Danke.

7voto

Brian North Punkte 1398

Ihre beste Option, wenn Sie Eingaben akzeptieren und in ein Datum konvertieren, entweder einzeln oder als ein Date-Objekt aufgeteilt, ist es, einfach ein neues Date-Objekt zu konstruieren, indem Sie ihm den Eingabewert übergeben:

var input = document.getElementById( 'id' ).value;
var d = new Date( input );

if ( !!d.valueOf() ) { // Gültiges Datum
    year = d.getFullYear();
    month = d.getMonth();
    day = d.getDate();
} else { /* Ungültiges Datum */ }

Auf diese Weise können Sie die Verarbeitung von Dates für verschiedene Eingabeformate nutzen - es akzeptiert YYYY/MM/DD, YYYY-MM-DD, MM/DD/YYYY, sogar vollständige Textdaten ( '25. Oktober 2013' ), usw., ohne dass Sie Ihren eigenen Parser schreiben müssen. Gültige Daten können dann leicht mit !!d.valueOf() überprüft werden - true wenn es gut ist, false wenn nicht :)

4voto

Erin Stanfill Punkte 1248

Sie werden den Wert auf '-' statt '/' aufteilen wollen. Z.B.,

$( "input" ).change(function(e) {
   var vals = e.target.value.split('-');
   var year = vals[0];
   var month = vals[1];
   var day = vals[2];
   console.info(day, month, year);
});

Hier ist ein jsbin eines funktionierenden Beispiels: http://jsbin.com/ayAjufo/2/edit

1voto

Rahul Tripathi Punkte 160300

Sie können es wie folgt versuchen:-

function parseDate(input) {
  var str= input.split('/');
  return new Date(str[0], str[1]-1, str[2]); 
}

str[1]-1 da die Monate bei 0 beginnen.

Sie können auch Date.parse(string) überprüfen, aber dies ist implementierungsabhängig.

0voto

Robbie Winter Punkte 101

Reguläre Ausdrucksverbesserungen mit ES9. Du kannst es so verwenden.

const  
reDate = /([0-9]{4})-([0-9]{2})-([0-9]{2})/,
match = reDate.exec('2019-05-29'),
year = match[1],  //2019
month = match[2], //05
day = match[3];   //29

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X