Skip to content
Advertisement

Adding minutes to datetime in momentjs

I need to add the variable secondsToMinutes to the startdate.

secondsToMinutes is “3:20” startDate = “2:00 PM” endDate should equal “2:03:20 PM”. I’ve tried a number of ways and get errors each and every time.

   var startdate = data.StartTime;
   startdate = moment(startdate).format('LTS');

   var secondsToMinutes = readableDuration(self.runlength());//='3:20';

   var seconds = secondsToMinutes.split(':')[1];
   var minutes = secondsToMinutes.split(':')[0];

   var date = moment(startdate)
        .add(seconds, 'seconds')
        .add(minutes, 'minutes')
        .format('LTS');

Date shows up as invalid date.

Advertisement

Answer

moment().format("LTS") returns a string value in hh:mm:ss AM/PM format. When you create a moment object using a string that is not in standard format, you should pass the input format as second parameter to moment constructor.

For eg: Jan 1, 2017 in string 01012017 is not a standard representation. But if you need a moment object out of it, using moment("01012017") will give “Invalid Date” response when formatting. Instead, use moment("01012017","DDMMYYYY")

var d = moment("01012017")
d.toISOString() => "Invalid date"

var d = moment("01012017", "DDMMYYYY")
d.toISOString() => "2016-12-31T18:30:00.000Z"

In your code, when creating ‘date’ variable pass “hh:mm:ss A” as second parameter in the moment constructor as mentioned below .

   var date = moment(startdate, "hh:mm:ss A")
        .add(seconds, 'seconds')
        .add(minutes, 'minutes')
        .format('LTS');
Advertisement