| 
          <!doctype html> | 
        
        
           | 
          <html> | 
        
        
           | 
            <head> | 
        
        
           | 
              <meta charset=utf-8> | 
        
        
           | 
              <meta name="viewport" content="width=device-width,initial-scale=1"/> | 
        
        
           | 
              <title>Display times in the viewer’s local timezone</title> | 
        
        
           | 
          
 | 
        
        
           | 
              <style> | 
        
        
           | 
                :root { | 
        
        
           | 
                  --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; | 
        
        
           | 
                  --body-color: #333; | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                html { | 
        
        
           | 
                  box-sizing: border-box; | 
        
        
           | 
                } | 
        
        
           | 
                *, *:before, *:after { | 
        
        
           | 
                  box-sizing: inherit; | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                html, body { | 
        
        
           | 
                  height: 100%; | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                body { | 
        
        
           | 
                  font-family: var(--font-family); | 
        
        
           | 
                  text-align: center; | 
        
        
           | 
                  line-height: 1.4; | 
        
        
           | 
                  font-size: 1.5em; | 
        
        
           | 
                  display: grid; | 
        
        
           | 
                  justify-content: center; | 
        
        
           | 
                  align-content: center; | 
        
        
           | 
                  color: var(--body-color); | 
        
        
           | 
                  margin: 1em; | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                h1, time { | 
        
        
           | 
                  font-weight: 500; | 
        
        
           | 
                  line-height: 1.35; | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                h1 { | 
        
        
           | 
                  margin: 0.4em 0; | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                time, #datetime-select { | 
        
        
           | 
                  font-size: 1.5em; | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                #datetime-select { | 
        
        
           | 
                  font-family: var(--font-family); | 
        
        
           | 
                  color: var(--body-color); | 
        
        
           | 
                  max-width: 90% | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                #info { | 
        
        
           | 
                  font-size: 0.8em; | 
        
        
           | 
                  max-width: 90%; | 
        
        
           | 
                  margin: 1em auto; | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                @media (max-width: 480px) { | 
        
        
           | 
                  body { | 
        
        
           | 
                    font-size: 1.1em; | 
        
        
           | 
                  } | 
        
        
           | 
                } | 
        
        
           | 
              </style> | 
        
        
           | 
          
 | 
        
        
           | 
            </head> | 
        
        
           | 
            <body> | 
        
        
           | 
              <section id="edit"> | 
        
        
           | 
                <h1>Enter your time:</h1> | 
        
        
           | 
                <input type="datetime-local" id="datetime-select" /> | 
        
        
           | 
                <p id="info">This page only works in <a href="https://caniuse.com/#feat=mdn-html_elements_input_input-datetime-local">these browsers</a>.</p> | 
        
        
           | 
              </section> | 
        
        
           | 
              <section id="display"> | 
        
        
           | 
                <time class="timezone yours"></time> | 
        
        
           | 
                <p><a href="/">Make your own time link!</a></p> | 
        
        
           | 
              </section> | 
        
        
           | 
          
 | 
        
        
           | 
              <script> | 
        
        
           | 
                'use strict' | 
        
        
           | 
                const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone, | 
        
        
           | 
                  locale = (navigator.languages && navigator.languages.length) ? navigator.languages[0] : navigator.language, | 
        
        
           | 
                  input = document.getElementById('datetime-select'), | 
        
        
           | 
                  info = document.getElementById('info'), | 
        
        
           | 
                  editSection = document.getElementById('edit'), | 
        
        
           | 
                  displaySection = document.getElementById('display'), | 
        
        
           | 
                  timeYours = document.querySelector('time.yours'), | 
        
        
           | 
                  tzYours = document.querySelector('span.yours') | 
        
        
           | 
          
 | 
        
        
           | 
                const onLoad = () => { | 
        
        
           | 
                  const time = new URLSearchParams(window.location.search).get('time') | 
        
        
           | 
                  if (time) { | 
        
        
           | 
                    const dateString = parseDate(time) | 
        
        
           | 
                    editSection.style.display = 'none' | 
        
        
           | 
                    timeYours.innerHTML = dateString | 
        
        
           | 
                    document.title = dateString | 
        
        
           | 
                  } else { | 
        
        
           | 
                    displaySection.style.display = 'none' | 
        
        
           | 
                  } | 
        
        
           | 
                } | 
        
        
           | 
          
 | 
        
        
           | 
                const buildUrl = (date) => | 
        
        
           | 
                  `?time=${(new Date(date).getTime() / 1000).toFixed(0)}` | 
        
        
           | 
          
 | 
        
        
           | 
                const parseDate = (timestamp) => [ | 
        
        
           | 
                  new Date(Number(timestamp) * 1000).toLocaleString(locale, { | 
        
        
           | 
                    weekday: 'long', | 
        
        
           | 
                    year: 'numeric', | 
        
        
           | 
                    month: 'long', | 
        
        
           | 
                    day: 'numeric' | 
        
        
           | 
                  }), | 
        
        
           | 
                  new Date(Number(timestamp) * 1000).toLocaleString(locale, { | 
        
        
           | 
                    hour: 'numeric', | 
        
        
           | 
                    minute: '2-digit', | 
        
        
           | 
                    timeZoneName: 'long' | 
        
        
           | 
                  }) | 
        
        
           | 
                ].join('<br/>') | 
        
        
           | 
          
 | 
        
        
           | 
                input.addEventListener('change', ev => { | 
        
        
           | 
                    const date = new Date(ev.target.value) | 
        
        
           | 
                  history.replaceState({}, "", buildUrl(date)) | 
        
        
           | 
                  info.innerHTML = "Share the current URL of this page, and others will see your chosen time in their time zone!" | 
        
        
           | 
                }) | 
        
        
           | 
          
 | 
        
        
           | 
                onLoad() | 
        
        
           | 
              </script> | 
        
        
           | 
            </body> | 
        
        
           | 
          </html> |