Mo.
Mo.

Reputation: 27465

How to set time with date in momentjs

Does momentjs provide any option to set time with particular time ?

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

Upvotes: 94

Views: 201538

Answers (5)

Sheldon Oliveira
Sheldon Oliveira

Reputation: 1005

for today's date with a different time:

moment(12, "HH")

Upvotes: 11

LoKat
LoKat

Reputation: 1219

Since this pops up in google results, moment now has a set(unit, value) function and you can achieve this by:

const hours = 15;
const minutes = 32;
var date = moment("1946-05-21").set("hour", hours).set("minute", minutes);

or as a combined function

var date = moment("1946-05-21").set({"hour": 15, "minute": 32});

Note: the set function requires the value to be Integer type

Upvotes: 90

dmnk_89
dmnk_89

Reputation: 497

var timeAndDate = moment(date).add(moment.duration(time))

When you have separated string for date and time you can parse first as date and second as duration and just add them. This should create moment with proper date and time

Upvotes: 4

Ben Winding
Ben Winding

Reputation: 11787

Just incase anyone is wondering how to set the time on a Date Object, here's how I did it:

const dateObj = new Date();

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

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

Upvotes: 6

BenM
BenM

Reputation: 53198

Moment.js does not provide a way to set the time of an existing moment through a string. Why not just concatenate the two:

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>

Alternatively, you can use two Moment objects and use the getters and setters. Although a far more verbose option, it could be useful if you can't use concatenation:

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>

Upvotes: 135

Related Questions