0

My goal is to have current date/time offset by given amount of minutes (negative or positive).

I went through many posts on Internet, but they're all using getMinutes()-minutes type of solutions, which will not take care of negative minutes or before/after midnight date changes.

I'm getting Uncaught TypeError: undefined is not a function if I specify negativeOffset or positiveOffset. Please advice.

function currentDateTime(negativeOffset, positiveOffset) {
    var newDate = new Date();
    newDate = (negativeOffset) ? newDate.getTime() - negativeOffset * 60000 : newDate;
    newDate = (positiveOffset) ? newDate.getTime() + positiveOffset * 60000 : newDate;
    var currentDate = ('0' + (newDate.getMonth()+1)).slice(-2) + '/' + ('0' + newDate.getDate()).slice(-2) + '/' + newDate.getFullYear();
    var currentHour = newDate.getHours() % 12;
    currentHour = currentHour ? currentHour : 12;
    currentHour = ('0' + (currentHour)).slice(-2);
    var currentMinute = ('0' + newDate.getMinutes()).slice(-2)
    var currentAmPm = (newDate.getHours() >= 12) ? 'pm' : 'am';
    var currentTime = currentHour + ':' + currentMinute + ' ' + currentAmPm;
    return[currentDate, currentTime];
}
1
  • If you can use libraries, have a look at moment
    – Volune
    Commented Aug 17, 2014 at 18:15

1 Answer 1

1
newDate = (negativeOffset) ? newDate.getTime() - negativeOffset * 60000 : newDate;
newDate = (positiveOffset) ? newDate.getTime() + positiveOffset * 60000 : newDate;

after this your newDate variable becomes integer, you should use

newDate = (negativeOffset) ? new Date(newDate.getTime() - negativeOffset * 60000) : newDate;
newDate = (positiveOffset) ? new Date(newDate.getTime() + positiveOffset * 60000) : newDate;

to keep it as Date object

0

Not the answer you're looking for? Browse other questions tagged or ask your own question.