# Event Date Time zone
# Date: December 2022
# Author: Codelaby
# Webpage: codelaby.es
# Follow me: twitter @codelaby

import datetime
from dateutil.tz import gettz

class RegionTZ:
    def __init__(self, name, tz, flag=None):
        self.name = name
        self.tz = gettz(tz.strip())
        if flag is None:
            flag = self.name
        self.flag = flag
        self.dateTime = None
        self.time = None


list = []
# For get TimeZone from Spain go to https://[Log in to view URL]
# in 'Zona Horaria' is the time zone string: Europe/Madrid
# For get a emoji flag, search in google: emoji flag <country name>
#    copy paste in third param

# Spanish speaking countries/regions
list.append(RegionTZ('Spain', 'Europe/Madrid', '🇪🇸' ))
list.append(RegionTZ('Islas Canarias', 'Atlantic/Canary', '🇮🇨' ))
list.append(RegionTZ('México', 'America/Mexico_City', '🇲🇽' ))
list.append(RegionTZ('Colombia', 'America/Bogota', '🇨🇴' ))
list.append(RegionTZ('Argentina', 'America/Argentina/Buenos_Aires', '🇦🇷' ))
list.append(RegionTZ('Peru', 'America/Lima', '🇵🇪' ))
list.append(RegionTZ('Venezuela', 'America/Caracas', '🇻🇪' ))
list.append(RegionTZ('Chile', 'America/Santiago', '🇨🇱' ))
list.append(RegionTZ('Guatemala', 'America/Guatemala', '🇬🇹' ))
list.append(RegionTZ('Ecuador', 'America/Guayaquil', '🇪🇨' ))
list.append(RegionTZ('Cuba', 'America/Havana', '🇨🇺' ))
list.append(RegionTZ('Bolivia', 'America/La_Paz', '🇧🇴' ))
list.append(RegionTZ('República Dominicana', 'America/Santo_Domingo', '🇩🇴' ))
list.append(RegionTZ('Honduras', 'America/Tegucigalpa', '🇭🇳' ))
list.append(RegionTZ('El Salvador', 'America/El_Salvador', '🇸🇻' ))
list.append(RegionTZ('Paraguay', 'America/Asuncion', '🇵🇾' ))
list.append(RegionTZ('Nicaragua', 'America/Managua', '🇳🇮' ))
list.append(RegionTZ('Costa Rica', 'America/Costa_Rica', '🇨🇷' ))
list.append(RegionTZ('Panamá', 'America/Panama', '🇵🇦' ))
list.append(RegionTZ('Puerto Rico', 'America/Puerto_Rico', '🇵🇷' ))
list.append(RegionTZ('Uruguay', 'America/Montevideo', '🇺🇾' ))

# Others regions
list.append(RegionTZ('Brasil', 'America/Sao_Paulo', '🇧🇷' ))
list.append(RegionTZ('Portugal', 'Europe/Lisbon', '🇵🇹' ))
list.append(RegionTZ('Marruecos', 'Africa/Casablanca', '🇲🇦' ))
list.append(RegionTZ('Andorra', 'Europe/Andorra', '🇦🇩' ))
list.append(RegionTZ('Gibraltar', 'Europe/Gibraltar', '🇬🇮' ))
list.append(RegionTZ('Italia', 'Europe/Rome', '🇮🇹' ))
list.append(RegionTZ('Los Angeles', 'America/Los_Angeles', '🇺🇸' ))

# Time Date Formats
t12h = '%I:%M %p'  #05:00 PM
tc12h = '%I %p'    #5 PM
t24h = '%H:%M'     #17:00
tc24h = '%HH'      #17H

dt1 = '%Y-%m-%d'   #2023-01-25
dt2 = '%d-%m-%Y'   #25-01-2023
dt3 = '%d %b %Y'   #24 Jan 2023

#================= Edit Zone =================
# For get TimeZone from Madrid go to https://[Log in to view URL]
# in 'Zona Horaria' is the time zone string: Europe/Madrid
# Set the event date in format Year, Month, Day, Hour, Minute, Second

# Create Event Date Time
event_tz = gettz('Europe/Madrid')
eventDate = datetime.datetime(
    2023, 1, 8, 17, 0, 0, #YYYY,M,D,H,M,S
    tzinfo=event_tz)

# Set output format for date and times
timeOut = tc24h
dateOut = dt2

#=============================================

# Make TimeTable
for row in list:
    row.datetime = eventDate.astimezone(row.tz).strftime('%Y-%m-%d %H:%M')
    #print(row.flag, row.time )

timeList = sorted(set(map(lambda n: n.datetime, list)))
print('Event date:', eventDate)

header = None
for t in timeList:
    gList = filter(lambda x: x.datetime == t, list)
    arr = map(lambda x: x.flag, gList)
    flags = ''.join(arr)
    dtObj = datetime.datetime.strptime(t, '%Y-%m-%d %H:%M')
    if (header != dtObj.strftime(dateOut)):
        header = dtObj.strftime(dateOut)
        print()
        print(header)
    print(dtObj.strftime(timeOut), '- ' + flags ) # time and flags

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: