From 292e10ce9e77951aacd8ec7d7f3497dbaadc723d Mon Sep 17 00:00:00 2001 From: Dongho Kim Date: Sun, 7 Jun 2026 00:57:05 +0200 Subject: [PATCH] update your time function --- src/data.js | 32 ++++++++++++++++---------------- src/main.js | 25 ++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/src/data.js b/src/data.js index 5ecb8b1..6ef80fa 100644 --- a/src/data.js +++ b/src/data.js @@ -3,22 +3,22 @@ // Group stage: June 11 – June 27, 2026 export const venues = { - 'Mexico City': { city: 'Mexico City', country: 'πŸ‡²πŸ‡½ Mexico', stadium: 'Estadio Azteca', capacity: '87,523' }, - 'Guadalajara': { city: 'Guadalajara', country: 'πŸ‡²πŸ‡½ Mexico', stadium: 'Estadio Akron', capacity: '49,850' }, - 'Monterrey': { city: 'Monterrey', country: 'πŸ‡²πŸ‡½ Mexico', stadium: 'Estadio BBVA', capacity: '53,500' }, - 'Toronto': { city: 'Toronto', country: 'πŸ‡¨πŸ‡¦ Canada', stadium: 'BMO Field', capacity: '45,000' }, - 'Vancouver': { city: 'Vancouver', country: 'πŸ‡¨πŸ‡¦ Canada', stadium: 'BC Place', capacity: '54,500' }, - 'Kansas City': { city: 'Kansas City', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Arrowhead Stadium', capacity: '76,416' }, - 'Los Angeles': { city: 'Los Angeles', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'SoFi Stadium', capacity: '70,240' }, - 'San Francisco': { city: 'San Francisco', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Levi\'s Stadium', capacity: '68,500' }, - 'Seattle': { city: 'Seattle', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Lumen Field', capacity: '69,000' }, - 'Dallas': { city: 'Dallas', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'AT&T Stadium', capacity: '80,000' }, - 'Atlanta': { city: 'Atlanta', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Mercedes-Benz Stadium', capacity: '71,000' }, - 'Miami': { city: 'Miami', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Hard Rock Stadium', capacity: '65,326' }, - 'New York': { city: 'New York / New Jersey', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'MetLife Stadium', capacity: '82,500' }, - 'Boston': { city: 'Boston', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Gillette Stadium', capacity: '65,878' }, - 'Philadelphia': { city: 'Philadelphia', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Lincoln Financial Field', capacity: '69,796' }, - 'Houston': { city: 'Houston', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'NRG Stadium', capacity: '72,220' }, + 'Mexico City': { city: 'Mexico City', country: 'πŸ‡²πŸ‡½ Mexico', stadium: 'Estadio Azteca', capacity: '87,523', utcOffset: -6 }, + 'Guadalajara': { city: 'Guadalajara', country: 'πŸ‡²πŸ‡½ Mexico', stadium: 'Estadio Akron', capacity: '49,850', utcOffset: -6 }, + 'Monterrey': { city: 'Monterrey', country: 'πŸ‡²πŸ‡½ Mexico', stadium: 'Estadio BBVA', capacity: '53,500', utcOffset: -6 }, + 'Toronto': { city: 'Toronto', country: 'πŸ‡¨πŸ‡¦ Canada', stadium: 'BMO Field', capacity: '45,000', utcOffset: -4 }, + 'Vancouver': { city: 'Vancouver', country: 'πŸ‡¨πŸ‡¦ Canada', stadium: 'BC Place', capacity: '54,500', utcOffset: -7 }, + 'Kansas City': { city: 'Kansas City', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Arrowhead Stadium', capacity: '76,416', utcOffset: -5 }, + 'Los Angeles': { city: 'Los Angeles', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'SoFi Stadium', capacity: '70,240', utcOffset: -7 }, + 'San Francisco': { city: 'San Francisco', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Levi\'s Stadium', capacity: '68,500', utcOffset: -7 }, + 'Seattle': { city: 'Seattle', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Lumen Field', capacity: '69,000', utcOffset: -7 }, + 'Dallas': { city: 'Dallas', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'AT&T Stadium', capacity: '80,000', utcOffset: -5 }, + 'Atlanta': { city: 'Atlanta', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Mercedes-Benz Stadium', capacity: '71,000', utcOffset: -4 }, + 'Miami': { city: 'Miami', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Hard Rock Stadium', capacity: '65,326', utcOffset: -4 }, + 'New York': { city: 'New York / New Jersey', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'MetLife Stadium', capacity: '82,500', utcOffset: -4 }, + 'Boston': { city: 'Boston', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Gillette Stadium', capacity: '65,878', utcOffset: -4 }, + 'Philadelphia': { city: 'Philadelphia', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'Lincoln Financial Field', capacity: '69,796', utcOffset: -4 }, + 'Houston': { city: 'Houston', country: 'πŸ‡ΊπŸ‡Έ USA', stadium: 'NRG Stadium', capacity: '72,220', utcOffset: -5 }, }; export const groups = [ diff --git a/src/main.js b/src/main.js index 584b00e..934bdf8 100644 --- a/src/main.js +++ b/src/main.js @@ -49,6 +49,28 @@ function groupCard(group) { } // ── Helpers ──────────────────────────────────────────────────────────────── +function getUserLocalTime(match, venue) { + if (!venue || venue.utcOffset === undefined) return ''; + const matchResult = match.date.match(/([A-Za-z]+)\s+(\d+)/); + if (!matchResult) return ''; + const [, monthStr, dayStr] = matchResult; + const [hour, minute] = match.time.split(':'); + + const monthMap = { 'Jun': 5, 'Jul': 6 }; + const utcHours = parseInt(hour, 10) - venue.utcOffset; + const matchDateUTC = new Date(Date.UTC(2026, monthMap[monthStr], parseInt(dayStr, 10), utcHours, parseInt(minute, 10))); + + const options = { + weekday: 'short', + month: 'short', + day: 'numeric', + hour: '2-digit', + minute: '2-digit', + timeZoneName: 'short' + }; + return matchDateUTC.toLocaleString(undefined, options); +} + function buildMatchdayHTML(group) { const matchdayNames = { 1: 'Matchday 1', 2: 'Matchday 2', 3: 'Matchday 3' }; return [1, 2, 3].map(md => { @@ -58,6 +80,7 @@ function buildMatchdayHTML(group) { const home = group.teams.find(t => t.name === match.home); const away = group.teams.find(t => t.name === match.away); const cardId = `match-${group.id}-${md}-${idx}`; + const userLocalTimeStr = getUserLocalTime(match, venue); return `