webentwicklung-frage-antwort-db.com.de

moment.js verkettet Datum und Uhrzeit

Ich habe vier Felder in einem Formular, von denen einige ein Anfangsdatum und das Enddatum enthalten (TT/MM/JJJJ) und die anderen die Startzeit und die Endzeit (hh: ss).

Den Wert dieser Felder verwende ich zum Abrufen von Datum und Uhrzeit mit moment.js wie folgt:

initialdate = moment( $('input#start_date').val(), 'DD/MM/YYYY' );
start_time = moment( $('input#start_time').val(), 'HH:mm');
enddate = moment( $('input#enddate').val(), 'DD/MM/YYYY' );
end_time = moment( $('input#end_time').val(), 'HH:mm');

Was ich vorhabe, ist, die Differenz zwischen den beiden Datumsangaben in Sekunden zu ermitteln und das Startdatum und die Startzeit sowie das Enddatum und die Endzeit zu verketten. Ich habe es versucht, aber ohne Erfolg:

start = initialdate + start_time;
end = enddate + end_time;
tracker = moment.duration( end.diff(start) ).asSeconds();
7
grankan

Der Fehler versucht, die Werte zu verketten. Testen Sie Folgendes:

let initialdate = '2016-10-01';
let start_time = '19:04:10';
let enddate = '2016-10-01';
let end_time = '19:04:20';

let datetimeA = moment(initialdate + " " + start_time);
let datetimeB = moment(enddate + " " + end_time);

console.log(datetimeA.format());
console.log(datetimeB.format());

let datetimeC = datetimeB.diff(datetimeA, 'seconds');

console.log(datetimeC);
13
mehparra

Verketten Sie die Datums- und Zeitzeichenfolgen und parsen Sie sie als eine, z.

var date = '23/02/2017';
var time = '15:42';

var dateTime = moment(date + ' ' + time, 'DD/MM/YYYY HH:mm');

console.log(dateTime.format('YYYY-MM-DD HH:mm'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>

14
RobG

Eine viel sauberere Lösung IMO ist die Verwendung von Momenten hour und minute.

let a = moment()
let b = moment().add(3, 'hour').add(37, 'minute') //b is the time portion
a.hour(b.hour()).minute(b.minute())
4
ahota

[2019] Die eleganteste Lösung ist:

/* "date" and "time" are moment() objects */

    date = date.set({
          hour: time.get('hour'),
          minute: time.get('minute'),
          second: 0,
          millisecond: 0,
        });

1
SERGEY VOLYNKIN