2017-03-16 1 views
0

Ich weiß, dass die Frage, wie Tage bis heute hinzugefügt werden, viel gefragt wurde. Versuchte diese Antworten und es funktioniert einfach nicht. Ich habe eine Datumsauswahl von Ich bekomme das Datum im Format D.M.Y und ich bekomme Tage in einer PHP-Variable hinzufügen, die ich von DB bekomme. Und ich möchte das hinzugefügte Datum in einer anderen Eingabe anzeigen. Die var und Anzeige in der zweiten Eingabe ist kein Problem.javascript get date von datepicker als hinzufügen tage

var days = '2'; // <?php echo $days ?>; 
 
days = parseInt(days); 
 

 
function autoDatum() { 
 
    var date_input = document.getElementById("date_input").value; 
 
    var date = Date(date_input); 
 
    var newdate = new Date(date); 
 

 
    newdate.setDate(newdate.getDate() + days); 
 

 
    var dd = newdate.getDate(); 
 
    var mm = newdate.getMonth() + 1; 
 
    var y = newdate.getFullYear(); 
 
    var someFormattedDate = dd + '.' + mm + '.' + y; 
 

 
    document.getElementById('date_valute_input').value = someFormattedDate; 
 
}
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: space-between; 
 
} 
 

 
div { 
 
    display: flex; 
 
    justify-content: space-between; 
 
    width: 300px; 
 
    margin: 10px; 
 
}
<div> 
 
    <label for="date_input">date_input</label> 
 
    <input id="date_input" type="text" value="16.03.2017"> 
 
</div> 
 
<div> 
 
    <label for="date_valute_input">date_valute_input</label> 
 
    <input id="date_valute_input" type="text" value=""> 
 
</div>

ich nur das heutige Datum + die Tage und nicht das ausgewählte Datum. Ich habe viel Code bearbeitet, aber nur dieser friert nicht ein. Kann jemand eine Idee haben, wie man das richtige Datum analysiert? In PHP und MySQL ist das Arbeiten mit Daten einfach im Vergleich zu Javascript.

+0

ist das Element '" date_input "' ' KarelG

+0

nein sein das Datum wird als String erhalten d.m.Y. –

+0

Wenn Sie es als "dmY" haben, dann müssen Sie es selbst analysieren und 'neues Datum (Jahr, Monat, Tag)' verwenden (wo Jahr, Monat und Tag aus der Zeichenkette extrahiert wurden. - einfach teilen?) Oder Verwenden Sie eine externe Bibliothek, die die Aufgabe für Sie erledigt. – KarelG

Antwort

0

nutzen den Moment Bibliothek: n - Anzahl der Tage

var newDate = moment(date_input).add(n, 'days'); 
0

Ihre Funktion scheint zu funktionieren. Haben Sie das nicht erwartet?

var days = '2'; // <?php echo $days ?>; 
 
days = parseInt(days); 
 

 
function autoDatum() { 
 
    var date_input = document.getElementById("date_input").value.split('.'); 
 
    var date = new Date(date_input[2], date_input[1], date_input[0]); 
 
    var newdate = new Date(date.getFullYear(), date.getMonth(), date.getDate() + days); 
 
    var dd = newdate.getDate(); 
 
    var mm = newdate.getMonth(); 
 
    var y = newdate.getFullYear(); 
 
    var someFormattedDate = dd + '.' + mm + '.' + y; 
 

 
    document.getElementById('date_valute_input').value = someFormattedDate; 
 
} 
 

 
autoDatum();
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: space-between; 
 
} 
 

 
div { 
 
    display: flex; 
 
    justify-content: space-between; 
 
    width: 300px; 
 
    margin: 10px; 
 
}
<div> 
 
    <label for="date_input">date_input</label> 
 
    <input id="date_input" type="text" value="03.06.2015"> 
 
</div> 
 
<div> 
 
    <label for="date_valute_input">date_valute_input</label> 
 
    <input id="date_valute_input" type="text" value=""> 
 
</div>

+0

Es hat funktioniert, aber es hat immer das heutige Datum genommen. Und die Funktion ist nicht meine, aber ich habe sie von einer Funktion, die ich von JSFidle bekommen habe, modifiziert. Aber vergessen, den Link zu speichern, um dem Autor Requisiten zu geben. –

+0

Ich habe meine Antwort aktualisiert und jetzt berücksichtigt es das Datum aus dem Eingabefeld und fügt 2 Tage dazu – Ionut

+0

Ihr Code ist viel sauberer als meins. Aber ich benutze schon den, mit dem KarelG mir geholfen hat. –

1

Wie gesagt @KarelG in den Kommentaren ich das Datum analysieren musste ich den Eingang bekam bilden und jetzt funktioniert es.

var days = <?php echo $days ?>; 
days = parseInt(days); 


function autoDatum() { 
var date_input = document.getElementById("date_input").value; 

var date = date_input.split("."); 


var newdate = new Date(date [2], date [1]-1, date [0]); 

newdate.setDate(newdate.getDate() + days); 

var dd = newdate.getDate(); 
var mm = newdate.getMonth() + 1; 
var y = newdate.getFullYear(); 

var someFormattedDate = dd + '.' + mm + '.' + y; 

document.getElementById('date_valute_input').value = someFormattedDate; 
+0

Nur fyi, der Grund für das Hinzufügen von + 1 ist, dass in JavaScript der Wert des Monats bei 0 beginnt (also Januar = 0, Februar = 1, ... Dezember = 11), was verwirrend ist. Aber du hast dich zumindest bemüht. Viel Spaß mit _javascripting_ – KarelG