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
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);
}