JSFiddle - React, Tailwind, and code Playground

by Chance Nursey-Bush

HTML

<pre id="output"></pre>

JavaScript

function dateAdd(date, interval, units) {
  var ret = new Date(date); //don't change original date
  switch(interval.toLowerCase()) {
    case 'year'   :  ret.setFullYear(ret.getFullYear() + units);  break;
    case 'quarter':  ret.setMonth(ret.getMonth() + 3*units);  break;
    case 'month'  :  ret.setMonth(ret.getMonth() + units);  break;
    case 'week'   :  ret.setDate(ret.getDate() + 7*units);  break;
    case 'day'    :  ret.setDate(ret.getDate() + units);  break;
    case 'hour'   :  ret.setTime(ret.getTime() + units*3600000);  break;
    case 'minute' :  ret.setTime(ret.getTime() + units*60000);  break;
    case 'second' :  ret.setTime(ret.getTime() + units*1000);  break;
    case 'millisecond': ret.setMilliseconds(ret.getMilliseconds() + units);  break;
    default       :  ret = undefined;  break;
  }
  return ret;
}

d = new Date();
out('start:      ' + d);
out('+1 year:    ' + dateAdd(d, 'YEAR', 1));
out('+1 quarter: ' + dateAdd(d, 'QUARTER', 1));
out('+1 month:   ' + dateAdd(d, 'MONTH', 1));
out('+1 week:    ' + dateAdd(d, 'week', 1));
out('+1 day:     ' + dateAdd(d, 'day', 1));
out('+1 hour:    ' + dateAdd(d, 'hour', 1));
out('+1 minute:  ' + dateAdd(d, 'minute', 1));
out('+1 second:  ' + dateAdd(d, 'second', 1));
out('+10000 millisecond:  ' + dateAdd(d, 'millisecond', 10000));

out('+1 garbage: ' + dateAdd(d, 'garbage', 1));


function out(s) {
  document.getElementById('output').innerHTML += s + '<br/>';
}