web-dev-qa-db-fra.com

Combinez la date et l'heure en une seule date avec javascript

J'ai un datepicker retournant une chaîne de date, et un timepicker ne retournant qu'une chaîne temporelle.

Comment dois-je les combiner en une seule date javascript?

Je pensais avoir trouvé une solution dans Date.js . Les exemples montrent une méthode at( )-, mais je ne la trouve pas dans la bibliothèque ...

17
Vegar

Vous pouvez configurer votre sélecteur de date pour renvoyer un format tel que YYYY-mm-dd (ou tout autre format que Date.parse prend en charge) et vous pouvez créer une chaîne dans timepicker comme:

 var dateStringFromDP = '2013-05-16';

 $('#timepicker').timepicker().on('changeTime.timepicker', function(e) {
    var timeString = e.time.hour + ':' + e.time.minute + ':00';
    var dateObj = new Date(datestringFromDP + ' ' + timeString);
  });

javascript Date object prend une chaîne en tant que paramètre constructeur

25
dm03514

Combinez la date et l'heure pour chaîner comme ceci:

1997-07-16T19:20:15

Et Date.js peut l’analyser:

Date.parse('1997-07-16T19:20:15');

Vous pouvez également utiliser moment.js ou quelque chose de similaire, ou utiliser Vanilla JS.

4
Jan.J

Vous pouvez concaténer la date et l'heure, puis utiliser moment pour obtenir la variable datetime

const date = '2018-12-24';
const time = '23:59:59';

const dateTime = moment(`${date} ${time}`, 'YYYY-MM-DD HH:mm:ss').format();
2
mtpultz

Pour JavaScript simple:

combineDateAndTime = function(date, time) {
    timeString = time.getHours() + ':' + time.getMinutes() + ':00';

    var year = date.getFullYear();
    var month = date.getMonth() + 1; // Jan is 0, dec is 11
    var day = date.getDate();
    var dateString = '' + year + '-' + month + '-' + day;
    var combined = new Date(dateString + ' ' + timeString);

    return combined;
};
2
David Silva Smith

L'exemple de David avec de légères modifications:

function CombineDateAndTime(date, time) {
    var timeString = time.getHours() + ':' + time.getMinutes() + ':00';
    var ampm = time.getHours() >= 12 ? 'PM' : 'AM';
    var year = date.getFullYear();
    var month = date.getMonth() + 1; // Jan is 0, dec is 11
    var day = date.getDate();
    var dateString = '' + year + '-' + month + '-' + day;
    var datec = dateString + 'T' + timeString;
    var combined = new Date(datec);

    return combined;
};
0
boateng