Javascript Timezone

by jessekinsman

HTML

<p>Date String: <span id="ds"></span></p>
<p>Full Timezone: <span id="timezone"></span></p>
<p>Timezone Abbreviation: <span id="abb"></span></p>
<p>Timezone Offset: <span id="offset"></span></p>
<p>Timezone Offset: <span id="offset"></span></p>
<p>Regions:</p>
<p id="regions"></p>

JavaScript

function newTZDate(dt) {
  var nDt = new Date(dt);
  var api = {};

  function getFullTz() {
    return /\((.*)\)/.exec(nDt.toString())[1];
  }

  function getTzObj(vl) {
    return timezones.find(function(ele) {
      return ele.value == vl;
    });
  }

  function getAbbr() {
    var fullTz = getFullTz();
    var obj = getTzObj(fullTz);
    return obj.abbr;
  }

  function getDateString() {
    return nDt.toString();
  }

  function getOffset() {
    var fullTz = getFullTz();
    var obj = getTzObj(fullTz);
    return obj.offset;
  }

  function getUTCRegions() {
    var fullTz = getFullTz();
    var obj = getTzObj(fullTz);
    return obj.utc;
  }
  api.dt = nDt;
  api.getAbbr = getAbbr;
  api.getFullTz = getFullTz;
  api.getOffset = getOffset;
  api.getDateStr = getDateString;
  api.getUTCRegions = getUTCRegions;
  var timezones = [{
      "value": "Dateline Standard Time",
      "abbr": "DST",
      "offset": -12,
      "isdst": false,
      "text": "(UTC-12:00) International Date Line West",
      "utc": [
        "Etc/GMT+12"
      ]
    },
    {
      "value": "UTC-11",
      "abbr": "U",
      "offset": -11,
      "isdst": false,
      "text": "(UTC-11:00) Coordinated Universal Time-11",
      "utc": [
        "Etc/GMT+11",
        "Pacific/Midway",
        "Pacific/Niue",
        "Pacific/Pago_Pago"
      ]
    },
    {
      "value": "Hawaiian Standard Time",
      "abbr": "HST",
      "offset": -10,
      "isdst": false,
      "text": "(UTC-10:00) Hawaii",
      "utc": [
        "Etc/GMT+10",
        "Pacific/Honolulu",
        "Pacific/Johnston",
        "Pacific/Rarotonga",
        "Pacific/Tahiti"
      ]
    },
    {
      "value": "Alaskan Standard Time",
      "abbr": "AKDT",
      "offset": -8,
      "isdst": true,
      "text": "(UTC-09:00) Alaska",
      "utc": [
        "America/Anchorage",
        "America/Juneau",
        "America/Nome",
        "America/Sitka",
        "America/Yakutat"
      ]
    },
    {
      "value": "Pacific Standard...