2017-02-16 6 views
0

Ich habe die folgende Zeichenfolge von meinem Webdienst zurückgegeben: '10: 00: 00'.Hinzufügen Zeit zu Zeichenfolge von hh: mm: ss javasctipt

Es wird erfolgreich in meiner Timepicker über deaktiviert werden:

$('#appointmentTimeTextbox').timepicker('option', 
             'disableTimeRanges', 
             [[obj.appointmentTime, obj.appointmentEndTime]]); 

Was würde Ich mag in 30 Minuten hinzuzufügen (eine Option in dem Timepicker) zu obj.appointmentEndTime. Ich habe versucht:

var appointmentEndTime = new date(obj.appointmentEndTime); 
    appointmentEndTime.setHours(appointmentEndTime.getHours() + .5); 

ohne Erfolg.

+0

.5 sollte 5 sein (ohne den Punkt) – ymz

+0

@ymz. . . definitiv nicht . . . das würde 5 Stunden hinzufügen. – talemyn

+1

dann warum nicht mit 30 mit setMinutes() und getMinutes()? – ymz

Antwort

2

Sie haben ein paar Probleme hier los:

1) Dies kann in der Frage nur ein Tippfehler sein, aber das Datum Konstruktor muss groß geschrieben werden: new Date(...

2) Die setHours() Methode nur nimmt ganzzahlige Werte für den Parameter "Stunden" an. . . von MDN:

hoursValue

ganze Zahl zwischen 0 und 23, um die Stunden repräsentiert.

Sie können in einer halben Stunde zwei Arten hinzufügen: durch einen "Minuten" Parameter in der setHours() Anruf bereitstellt:

appointmentEndTime.setHours(appointmentEndTime.getHours(), 30); 

. . . oder indem Sie einfach mit der setMinutes() Methode:

appointmentEndTime.setMinutes(appointmentEndTime.getMinutes() + 30); 

3) Wenn Sie den neuen Datumswert mit erstellen:

var appointmentEndTime = new date(obj.appointmentEndTime); 

. . . Sie arbeiten mit einem brandneuen Date-Objekt, so dass Sie entweder den neuen Zeitwert in die ursprüngliche obj.appointmentEndTime-Eigenschaft kopieren müssen, oder Sie müssen den Wert aus der neuen appointmentEndTime-Variable erstellen und diese stattdessen an die timepicker()-Methode übergeben von obj.appointmentEndTime.


UPDATE

Okay, also schaute ich auf Ihre Fiddle und die Frage, die Sie jetzt haben, ist, dass Sie nicht ein Datum mit nur einem Zeitwert erstellen:

var appoinementEndTime = new Date('10:00:00'); 

Wieder sucht nach MDN (eine großen Ressource, übrigens), die gültigen Eingaben für den Date Konstruktor sind:

new Date();   // The exact moment at the creation of the Date 
new Date(value);  // In milliseconds, since 1 January 1970 00:00:00 UTC 
new Date(dateString); // A string value representing a date (see link for valid formats) 
new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]); 

So Ihre beste Möglichkeit wäre, um ein Datum zu wählen (das aktuelle Datum wäre am einfachsten) und überschreibt dann die Zeitwert zu diesem Zeitpunkt, um den Wert zu erhalten, die Sie wollen:

var endTimeArray = obj.appoinementEndTime.split(":"); 
var appoinementEndTime = new Date(); 
appoinementEndTime.setHours(endTimeArray[0],  // the hours value 
          endTimeArray[1] + 30, // the minutes value 
          endTimeArray[2],  // the seconds value 
          0);     // the milliseconds value 

Verwenden Sie das (und Ihren Wert von "10: 00: 00 ), the time value of the date should be 10:30:00 (which you can create using the getHours() , getMinutes() , and getSeconds methods on ErnennungEndTime").

+0

Es war ein Tippfehler mit Datum. Hier ist die Geige: https://jsfiddle.net/vgkyoywq/9/ Ich bekomme ein ungültiges Datum –

+0

@DanWier - aktualisiert meine Antwort, basierend auf Ihrer Fiddle – talemyn

+1

Tolle Arbeit! Das einzige, was ich tun musste, ist eine '0' am Ende der Sekunden zu addieren, weil es aus irgendeinem Grund eine einzelne Ziffer ist. Das MDN ist eine fantastische Ressource, die ich nicht annähernd genug nutze. Vielen Dank für Ihre Hilfe talemyn –

Verwandte Themen