web-dev-qa-db-fra.com

Comment régler l'heure avec la date dans momentjs

momentjs offre-t-il une option permettant de régler l'heure avec une heure donnée?

var date = "2017-03-13";
var time = "18:00";

var timeAndDate = moment(date).startOf(time);

console.log(timeAndDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

enter image description here

22
Mo.

Moment.js ne fournit pas un moyen de définir l'heure d'un moment existant à travers une chaîne. Pourquoi ne pas simplement concaténer les deux:

var date = "2017-03-13";
var time = "18:00";

var timeAndDate = moment(date + ' ' + time);

console.log(timeAndDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

Alternativement, vous pouvez utiliser deux objets Moment et utiliser les getters et les setters. Bien que ce soit une option beaucoup plus détaillée, elle pourrait être utile si vous ne pouvez pas utiliser la concaténation:

let dateStr = '2017-03-13',
    timeStr = '18:00',
    date    = moment(dateStr),
    time    = moment(timeStr, 'HH:mm');

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

console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
50
BenM

Juste au cas où quelqu'un se demanderait comment régler l'heure sur un Date Object, voici comment je l'ai fait:

const dateObj = new Date();

const dateStr = dateObj.toISOString().split('T').shift();
const timeStr = '03:45';

const timeAndDate = moment(dateStr + ' ' + timeStr).toDate();
0
Ben Winding