2017-11-19 1 views
0

In Javascript habe ich zwei vars (aankomstDatum & vertrekDatum) mit einem Check-in-Datum und einem Checkout-Datum im Format "TT-MM-JJ". Diese Variablen stammen aus Texteingabefeldern mit einem jQuery-Datapicker.Werden diese Variablen korrekt konvertiert, um sie für die Buchung von Preisberechnungen zu verwenden?

Ich möchte den Preis für den Aufenthalt nach aankomstDatum und vertrekDatum berechnen, also ist es richtig, dass ich noch die vars zu Daten konvertieren muss? Ich habe es mit dem folgenden Code ab dd-mm-yy:

var parts = aankomstDatum.split('-'); 
var aankomstDatumDate = new Date(parts[2],parts[0]-1,parts[1]); 
document.getElementById("aankomstDate").innerHTML = aankomstDatumDate; 

Wenn i Ausgang aankomstDatumDate ich einen Arbeitstermin in folgendem Format: Sa 11. November 2017 00:00:00 GMT + 0100 (Romance Standardzeit).

Meine zwei Fragen:

1) Ist dieser Schritt notwendig? Ist mein Gedankengang richtig, dass ich mit Daten beginne und sie in Daten umwandle, bevor ich sie verwenden kann, um einen Buchungspreis zu berechnen?

2) Ist das ausgegebene Datum Sa 11 November 2017 00:00:00 GMT + 0100 (Romanze Standardzeit) in Ordnung, um den Buchungspreis zu berechnen? Oder ist es viel besser, es in einem Format wie "TT-MM-JJ" zu haben? Und wenn ja, wie erreiche ich das?

Danke allen!

+0

Die Antwort auf die Frage im Titel ist "NEIN". Da das Eingabeformat dd-mm-yy ist, sollte 'neues Datum (Teile [2], Teile [0] -1, Teile [1])' 'neues Datum sein (Teile [2], Teile [1] - 1, Teile [0]) '(dh Sie haben die Monate und Tage transponiert). Es ist auch keine gute Idee, 2-stellige Jahre zu verwenden. Angesichts der Informationen im OP glaube ich nicht, dass es möglich ist, die anderen 2 Fragen zu beantworten. Siehe [* Wie stelle ich eine gute Frage? *] (Http://stackoverflow.com/help/how-to-ask) – RobG

Antwort

1

beantworten Ihre beiden Fragen:

  1. Ja, dieser Gedankengang ist richtig - Sie möchten Ihre Strings in Date Objekte konvertieren, so dass Sie Operationen an diesen Tagen tun können.
  2. Wenn Sie eine Art von Arithmetik für die Daten verwenden möchten, möchten Sie wahrscheinlich getTime() für diese Daten verwenden, die die Daten in Unix Time (Millisekunden) zurückgibt.

Zum Beispiel, wenn Sie die Anzahl der Tage, die ein Benutzer wurde eingecheckt für (checkoutDate - checkinDate) berechnen wollen, würden Sie diese Funktion verwenden, die zwei Datumsobjekte akzeptiert:

function daysDifference(date1, date2) { 
 

 
    let diff = date2.getTime() - date1.getTime(); 
 

 
    return Math.round(diff/(1000*60*60*24)); // divide by number of milliseconds in a day 
 
} 
 

 
// Example 
 
var date1 = new Date(); // today 
 
var date2 = new Date(); 
 

 
// add 5 days to date2 
 
date2.setDate(date2.getDate() + 5); 
 

 
var daysCheckedIn = daysDifference(date1, date2); 
 

 
console.log("User checked in for: " + daysCheckedIn + " days.");

+0

Danke, diese Info hilft mir sehr! Aber der Preis hängt vom Monat ab, also würde ich in Millisekunden diese Information verlieren? –

Verwandte Themen