function isValidTimeFormat(timeStr) { const twelveHourFormat = /^(\d{1,2}:\d{2} [AP]M)$/i; const twentyFourHourFormat = /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/; if (twelveHourFormat.test(timeStr)) { return { valid: true, is24HourFormat: false }; } else if (twentyFourHourFormat.test(timeStr)) { return { valid: true, is24HourFormat: true }; } else { return { valid: false, is24HourFormat: false }; } } /* * SF (PDT): "-07:00" * Chicago (CDT): "-05:00" * New York (EDT): "-04:00" * London (BST): "+01:00" */ function convertToLocal(timeString, offsetFromGMT = '-00:00') { let hour, minute; const formatInfo = isValidTimeFormat(timeString); if (!formatInfo.valid) { return timeString; // Return the original string if it's not a valid time format. } if (formatInfo.is24HourFormat) { [hour, minute] = timeString.split(':').map(num => parseInt(num, 10)); } else { let minutePart, meridiem; [hour, minutePart] = timeString.split(':'); [minute, meridiem] = minutePart.split(' '); hour = parseInt(hour, 10); minute = parseInt(minute, 10); if (meridiem.toUpperCase() === 'PM' && hour !== 12) { hour += 12; } else if (meridiem.toUpperCase() === 'AM' && hour === 12) { hour = 0; } } const isoString = `2022-04-01T${String(hour).padStart(2, '0')}:${minute.toString().padStart(2, '0')}:00.000${offsetFromGMT}`; const dateObj = new Date(isoString); // Convert to local time string based on format. let localTime; if (formatInfo.is24HourFormat) { localTime = dateObj.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit', hour12: false }); } else { localTime = dateObj.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit', hour12: true }); } return localTime; } document.querySelectorAll('h3.eyebrow.u-mb-0').forEach(h3 => { const timeString = h3.textContent.trim(); if (isValidTimeFormat(timeString).valid) { /* * SF (PDT): "-07:00" * Chicago (CDT): "-05:00" * New York (EDT): "-04:00" * London (BST): "+01:00" */ const localTime = convertToLocal(timeString, '-07:00'); // Change this parameter. console.log({ timeString, localTime }); h3.textContent = localTime; } });