mirror of
				https://github.com/therootcompany/tz.js
				synced 2025-11-03 22:32:47 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			277 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			277 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html lang="en" class="no-js">
 | 
						|
  <head>
 | 
						|
    <meta charset="UTF-8" />
 | 
						|
    <meta name="viewport" content="width=device-width" />
 | 
						|
 | 
						|
    <title>Convert TimeZones in Your Browser</title>
 | 
						|
 | 
						|
    <link rel="canonical" href="https://therootcompany.github.io/tz.js/" />
 | 
						|
 | 
						|
    <meta name="theme-color" content="#FF00FF" />
 | 
						|
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/spcss@0.7.0" />
 | 
						|
 | 
						|
    <style>
 | 
						|
      input {
 | 
						|
        width: 24em;
 | 
						|
      }
 | 
						|
    </style>
 | 
						|
  </head>
 | 
						|
 | 
						|
  <body>
 | 
						|
    <!-- Content -->
 | 
						|
    <h1>
 | 
						|
      <a href="https://github.com/therootcompany/tz.js" target="_blank"
 | 
						|
        >XTZ.js</a
 | 
						|
      >
 | 
						|
    </h1>
 | 
						|
 | 
						|
    <h3>
 | 
						|
      Current Time:
 | 
						|
      <br />
 | 
						|
      <span class="js-my-dt">YYYY-MM-DDThh:mm:ss.mmm+0000</span>
 | 
						|
    </h3>
 | 
						|
    <pre><code>new Intl.DateTimeFormat().resolvedOptions().timeZone;</code></pre>
 | 
						|
    Current Time Zone: <span class="js-my-tz">America/XXXX</span>
 | 
						|
    <br />
 | 
						|
    <pre><code>String(((new Date()).getTimezoneOffset() / 60)).padStart(2, '0') +
 | 
						|
String(((new Date()).getTimezoneOffset() % 60)).padStart(2, '0')</code></pre>
 | 
						|
    Current Time Offset: <span class="js-my-offset">-0000</span>
 | 
						|
    <hr />
 | 
						|
 | 
						|
    <form class="js-tz2tz">
 | 
						|
      <h3>Convert Between Time Zones:</h3>
 | 
						|
      <label>
 | 
						|
        Time:
 | 
						|
        <input
 | 
						|
          class="js-dt-xtz"
 | 
						|
          type="text"
 | 
						|
          placeholder="ex: 2021-03-14 03:15:69.000"
 | 
						|
          required
 | 
						|
        />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
 | 
						|
      <label>
 | 
						|
        Input Zone:
 | 
						|
        <input
 | 
						|
          class="js-tz1-xtz"
 | 
						|
          type="text"
 | 
						|
          placeholder="ex: UTC or America/New_York"
 | 
						|
          required
 | 
						|
        />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
 | 
						|
      <label>
 | 
						|
        Output Zone:
 | 
						|
        <input
 | 
						|
          class="js-tz2-xtz"
 | 
						|
          type="text"
 | 
						|
          placeholder="ex: America/Los_Angeles or UTC"
 | 
						|
          required
 | 
						|
        />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
 | 
						|
      <label>
 | 
						|
        ISO:
 | 
						|
        <input class="js-my-dt-xtz" type="text" disabled />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <button type="submit">Convert between Zones!</button>
 | 
						|
      <br />
 | 
						|
    </form>
 | 
						|
 | 
						|
    <hr />
 | 
						|
 | 
						|
    <form class="js-local">
 | 
						|
      <h3>Local ISO+Offset String:</h3>
 | 
						|
      <pre><code>XTZ.toLocalISOString(new Date())</code></pre>
 | 
						|
      <label>
 | 
						|
        ISO:
 | 
						|
        <input class="js-my-dt-local" type="text" disabled />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
    </form>
 | 
						|
 | 
						|
    <hr />
 | 
						|
 | 
						|
    <form class="js-tz2utc">
 | 
						|
      <h3>TimeZone-Relative (Local) to Absolute (ISO+Offset) String:</h3>
 | 
						|
      <pre><code>XTZ.fromTimeZone("<span class="js-dtx-tz">YYYY-03-14 03:15:69.000</span>", "<span class="js-tzx-tz">UTC</span>")
 | 
						|
   .toISOString()
 | 
						|
// <span class="js-myx-dt-tz"></span></code></pre>
 | 
						|
      <label>
 | 
						|
        Time:
 | 
						|
        <input
 | 
						|
          class="js-dt-tz"
 | 
						|
          type="text"
 | 
						|
          placeholder="ex: 2021-03-14 03:15:69.000"
 | 
						|
          required
 | 
						|
        />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
 | 
						|
      <label>
 | 
						|
        Input Zone:
 | 
						|
        <input
 | 
						|
          class="js-tz-tz"
 | 
						|
          type="text"
 | 
						|
          placeholder="ex: America/New_York"
 | 
						|
          required
 | 
						|
        />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
      <label>
 | 
						|
        ISO:
 | 
						|
        <input class="js-my-dt-tz" type="text" disabled />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <button type="submit">Convert to ISO+Offset!</button>
 | 
						|
      <br />
 | 
						|
    </form>
 | 
						|
 | 
						|
    <hr />
 | 
						|
 | 
						|
    <form class="js-utc2tz">
 | 
						|
      <h3>Absolute (UTC) to TimeZone-Relative (ISO+Offset) String:</h3>
 | 
						|
      <pre><code>XTZ.toTimeZone("<span class="js-dtx-utc">YYYY-03-14 03:15:69.000</span>", "<span class="js-tzx-utc">UTC</span>")
 | 
						|
   .toISOString()
 | 
						|
// <span class="js-myx-dt-utc"></span></code></pre>
 | 
						|
      <label>
 | 
						|
        Time:
 | 
						|
        <input
 | 
						|
          class="js-dt-utc"
 | 
						|
          type="text"
 | 
						|
          placeholder="ex: 2021-03-14 03:15:69.000"
 | 
						|
          required
 | 
						|
        />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
      <label>
 | 
						|
        Output Zone:
 | 
						|
        <input
 | 
						|
          class="js-tz-utc"
 | 
						|
          type="text"
 | 
						|
          placeholder="ex: America/New_York"
 | 
						|
          required
 | 
						|
        />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
      <label>
 | 
						|
        ISO:
 | 
						|
        <input class="js-my-dt-utc" type="text" disabled />
 | 
						|
      </label>
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <button type="submit">Convert to TZ!</button>
 | 
						|
      <br />
 | 
						|
    </form>
 | 
						|
 | 
						|
    <hr />
 | 
						|
    <h3>Time Zones List</h3>
 | 
						|
    See the
 | 
						|
    <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"
 | 
						|
      >Full List of Time Zones</a
 | 
						|
    >
 | 
						|
    on Wikipedia.
 | 
						|
    <pre>
 | 
						|
America/New_York    -0500 -0400             (Eastern Time)
 | 
						|
America/Denver      -0700 -0600             (Mountain Time)
 | 
						|
America/Phoenix     -0700 (No DST)          (Arizona Time)
 | 
						|
America/Los_Angeles -0800 -0700             (Pacific Time)
 | 
						|
UTC                 Z                       (UTC "Zulu" Time)
 | 
						|
Australia/Adelaide  +0930 +1030    (30-min)
 | 
						|
Asia/Kathmandu      +0545 (No DST) (45-min)
 | 
						|
Asia/Kolkata        +0530 (No DST) (30-min)</pre
 | 
						|
    >
 | 
						|
    <hr />
 | 
						|
    Code at
 | 
						|
    <a href="https://github.com/therootcompany/tz.js" target="_blank"
 | 
						|
      >github.com/therootcompany/tz.js</a
 | 
						|
    >
 | 
						|
    <script src="./xtz.js"></script>
 | 
						|
    <script src="./tolocalisostring.js"></script>
 | 
						|
    <script>
 | 
						|
      function $(sel, el) {
 | 
						|
        return (el || document.body).querySelector(sel);
 | 
						|
      }
 | 
						|
 | 
						|
      function translate(dt, tz, tz2) {
 | 
						|
        var utc = new Date(XTZ.fromTimeZone(dt, tz).toISOString());
 | 
						|
        if (!tz2) {
 | 
						|
          return utc;
 | 
						|
        }
 | 
						|
        return XTZ.toTimeZone(utc, tz2);
 | 
						|
      }
 | 
						|
 | 
						|
      function fromTimeZone() {
 | 
						|
        var curDt = $(".js-dt-tz").value;
 | 
						|
        var curTz = $(".js-tz-tz").value;
 | 
						|
        $(".js-my-dt-tz").value = XTZ.fromTimeZone(curDt, curTz).toISOString();
 | 
						|
 | 
						|
        $(".js-dtx-tz").innerText = curDt;
 | 
						|
        $(".js-tzx-tz").innerText = curTz;
 | 
						|
        $(".js-myx-dt-tz").innerText = $(".js-my-dt-tz").value;
 | 
						|
      }
 | 
						|
 | 
						|
      function toTZ() {
 | 
						|
        var curDt = $(".js-dt-utc").value;
 | 
						|
        var curTz = $(".js-tz-utc").value;
 | 
						|
        $(".js-my-dt-utc").value = XTZ.toTimeZone(curDt, curTz).toISOString();
 | 
						|
 | 
						|
        $(".js-dtx-utc").innerText = curDt;
 | 
						|
        $(".js-tzx-utc").innerText = curTz;
 | 
						|
        $(".js-myx-dt-utc").innerText = $(".js-my-dt-utc").value;
 | 
						|
      }
 | 
						|
 | 
						|
      function xTZ() {
 | 
						|
        var curDt = $(".js-dt-xtz").value;
 | 
						|
        var inTz = $(".js-tz1-xtz").value;
 | 
						|
        var outTz = $(".js-tz2-xtz").value;
 | 
						|
        $(".js-my-dt-xtz").value = translate(curDt, inTz, outTz).toISOString();
 | 
						|
      }
 | 
						|
 | 
						|
      $(".js-my-dt-local").value = XTZ.toLocalISOString();
 | 
						|
 | 
						|
      var myTz = new Intl.DateTimeFormat("default", {}).resolvedOptions()
 | 
						|
        .timeZone;
 | 
						|
      $(".js-my-tz").innerText = myTz;
 | 
						|
      $(".js-tz-tz").value = myTz;
 | 
						|
      $(".js-tz-utc").value = myTz;
 | 
						|
      $(".js-tz1-xtz").value = myTz;
 | 
						|
      $(".js-tz2-xtz").value = "Asia/Kathmandu";
 | 
						|
      var myOffset = -1 * new Date().getTimezoneOffset();
 | 
						|
      $(".js-my-offset").innerText =
 | 
						|
        XTZ.formatOffset(myOffset) + " (" + myOffset + ")";
 | 
						|
 | 
						|
      var myDate = new Date();
 | 
						|
      $(".js-my-dt").innerText = XTZ.toTimeZone(myDate, myTz).toISOString();
 | 
						|
      $(".js-dt-tz").value = XTZ.toTimeZone(myDate, myTz)
 | 
						|
        .toISOString()
 | 
						|
        .replace("T", " ")
 | 
						|
        .replace(/(Z|(\+|-)\d+)$/, "");
 | 
						|
      $(".js-dt-xtz").value = $(".js-dt-tz").value;
 | 
						|
      $(".js-dt-utc").value = myDate.toISOString();
 | 
						|
 | 
						|
      $("form.js-utc2tz").addEventListener("submit", function (ev) {
 | 
						|
        ev.preventDefault();
 | 
						|
        ev.stopPropagation();
 | 
						|
        toTZ();
 | 
						|
      });
 | 
						|
      $("form.js-tz2utc").addEventListener("submit", function (ev) {
 | 
						|
        ev.preventDefault();
 | 
						|
        ev.stopPropagation();
 | 
						|
        fromTimeZone();
 | 
						|
      });
 | 
						|
 | 
						|
      fromTimeZone();
 | 
						|
      toTZ();
 | 
						|
      xTZ();
 | 
						|
    </script>
 | 
						|
  </body>
 | 
						|
</html>
 |