function getLocalOrGetUTC(increment, date) {
  var _incrementHandlers;

  var utc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';

  var incrementHandlers = (_incrementHandlers = {}, defineProperty(_incrementHandlers, TIMEZONE_OFFSET, function (date) {
    return utc ? 0 : date.getTimezoneOffset() / 60 * -1;
  }), defineProperty(_incrementHandlers, MILLISECOND, function (date) {
    return date['get' + utc + 'Milliseconds']();
  }), defineProperty(_incrementHandlers, SECOND, function (date) {
    return date['get' + utc + 'Seconds']();
  }), defineProperty(_incrementHandlers, MINUTE, function (date) {
    return date['get' + utc + 'Minutes']();
  }), defineProperty(_incrementHandlers, HOUR, function (date) {
    return date['get' + utc + 'Hours']();
  }), defineProperty(_incrementHandlers, DATE, function (date) {
    return date['get' + utc + 'Date']();
  }), defineProperty(_incrementHandlers, DAY, function (date) {
    return date['get' + utc + 'Day']() + 1;
  }), defineProperty(_incrementHandlers, WEEK, function (date) {
    return Math.floor(((date - new Date(date['get' + utc + 'FullYear'](), 0, 1)) / 1000 / 60 / 60 / 24 + 1) / 7);
  }), defineProperty(_incrementHandlers, MONTH, function (date) {
    return date['get' + utc + 'Month']() + 1;
  }), defineProperty(_incrementHandlers, YEAR, function (date) {
    return date['get' + utc + 'FullYear']();
  }), _incrementHandlers);

  return incrementHandlers[increment](date);
}
function getLocalOrGetUTC(increment, date) {
  var _incrementHandlers;

  var utc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';

  var incrementHandlers = (_incrementHandlers = {}, defineProperty(_incrementHandlers, TIMEZONE_OFFSET, function (date) {
    return utc ? 0 : date.getTimezoneOffset() / 60 * -1;
  }), defineProperty(_incrementHandlers, MILLISECOND, function (date) {
    return date['get' + utc + 'Milliseconds']();
  }), defineProperty(_incrementHandlers, SECOND, function (date) {
    return date['get' + utc + 'Seconds']();
  }), defineProperty(_incrementHandlers, MINUTE, function (date) {
    return date['get' + utc + 'Minutes']();
  }), defineProperty(_incrementHandlers, HOUR, function (date) {
    return date['get' + utc + 'Hours']();
  }), defineProperty(_incrementHandlers, DATE, function (date) {
    return date['get' + utc + 'Date']();
  }), defineProperty(_incrementHandlers, DAY, function (date) {
    return date['get' + utc + 'Day']() + 1;
  }), defineProperty(_incrementHandlers, WEEK, function (date) {
    return Math.floor(((date - new Date(date['get' + utc + 'FullYear'](), 0, 1)) / 1000 / 60 / 60 / 24 + 1) / 7);
  }), defineProperty(_incrementHandlers, MONTH, function (date) {
    return date['get' + utc + 'Month']() + 1;
  }), defineProperty(_incrementHandlers, YEAR, function (date) {
    return date['get' + utc + 'FullYear']();
  }), _incrementHandlers);

  return incrementHandlers[increment](date);
}
function getLocalOrGetUTC ( increment , date ) { var _incrementHandlers ; var utc = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : '' ; var incrementHandlers = ( _incrementHandlers = { } , defineProperty ( _incrementHandlers , TIMEZONE_OFFSET , function ( date ) { return utc ? 0 : date . getTimezoneOffset ( ) / 60 * - 1 ; } ) , defineProperty ( _incrementHandlers , MILLISECOND , function ( date ) { return date [ 'get' + utc + 'Milliseconds' ] ( ) ; } ) , defineProperty ( _incrementHandlers , SECOND , function ( date ) { return date [ 'get' + utc + 'Seconds' ] ( ) ; } ) , defineProperty ( _incrementHandlers , MINUTE , function ( date ) { return date [ 'get' + utc + 'Minutes' ] ( ) ; } ) , defineProperty ( _incrementHandlers , HOUR , function ( date ) { return date [ 'get' + utc + 'Hours' ] ( ) ; } ) , defineProperty ( _incrementHandlers , DATE , function ( date ) { return date [ 'get' + utc + 'Date' ] ( ) ; } ) , defineProperty ( _incrementHandlers , DAY , function ( date ) { return date [ 'get' + utc + 'Day' ] ( ) + 1 ; } ) , defineProperty ( _incrementHandlers , WEEK , function ( date ) { return Math . floor ( ( ( date - new Date ( date [ 'get' + utc + 'FullYear' ] ( ) , 0 , 1 ) ) / 1000 / 60 / 60 / 24 + 1 ) / 7 ) ; } ) , defineProperty ( _incrementHandlers , MONTH , function ( date ) { return date [ 'get' + utc + 'Month' ] ( ) + 1 ; } ) , defineProperty ( _incrementHandlers , YEAR , function ( date ) { return date [ 'get' + utc + 'FullYear' ] ( ) ; } ) , _incrementHandlers ) ; return incrementHandlers [ increment ] ( date ) ; }
Gets the specified increment in local time or UTC for a date object
@param   {String}  increment   date increment to get the value of
@param   {Date}    date        a date object
@param   {String}  utc         should equal 'UTC' if UTC function
@returns {Date}                the value for that increment, in UTC
Gets the specified increment in local time or UTC for a date object