Date time timezone

by b_g_v

HTML

<h2>JavaScript Dates</h2>

<p id="demo"></p>

JavaScript

const t = "2025-06-19T10:00:00.000Z";
//const tzString = "UTC";
//const tzString = "Asia/Tokyo";
//const tzString = "America/Chicago";
const tzString = "-05:00";
const d = new Date(t);
let text = d.toLocaleString("en-US", {timeZone: tzString, dateStyle: "short", timeStyle: "long", hour12: false});
console.log(text);
//text = parseCustomDate(text);
//console.log(text);
d2 = new Date(text);

const formatter = new Intl.DateTimeFormat('uk-UA', {
  weekday: 'short',
  year: 'numeric',
  month: '2-digit',
  day: '2-digit'
});

function parseCustomDate(str) {
  const match = str.match(/(\d{1,2})\/(\d{1,2})\/(\d{2}), (\d{1,2}):(\d{2}):(\d{2}) GMT([+-]\d{1,2})/);
  if (!match) throw new Error('Invalid format');

  const [ , m, d, y, h, min, s, offsetHour ] = match;

  const fullYear = `20${y.padStart(2, '0')}`;
  const month = m.padStart(2, '0');
  const day = d.padStart(2, '0');
  const hour = h.padStart(2, '0');
  const minute = min.padStart(2, '0');
  const second = s.padStart(2, '0');

  // Pad offset to `+09:00` format
  const tzOffset = `${offsetHour.startsWith('-') ? '-' : '+'}${String(Math.abs(offsetHour)).padStart(2, '0')}:00`;

  const iso = `${fullYear}-${month}-${day}T${hour}:${minute}:${second}${tzOffset}`;
  console.log(iso);
  return new Date(iso);
}

function formatDate(date){
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');

  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  const seconds = String(date.getSeconds()).padStart(2, '0');

  const formatted = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  return formatted;
}

document.getElementById("demo").innerHTML = t + '<BR><BR>' +
  text + '<BR><BR>' +
  d2 + '<BR><BR>' +
  d2.toISOString() + '<BR><BR>' +
  formatter.format(d2) +  '<BR><BR>' +
  formatDate(d2) +...