Module:Timetable: Difference between revisions

From Nasqueron Agora
(Created page with "function generateTimeList(weekday, start, finish) -- Define the time zones local utcOffset = 0 local cestOffset = 2 local mdtOffset = -6 -- Parse the start and end times local startHour, startMinute = start:match("(%d+):(%d+)") local endHour, endMinute = finish:match("(%d+):(%d+)") -- Convert the start and end times to integers startHour = tonumber(startHour) startMinute = tonumber(startMinute) endHour = tonumber(endHour) endMinute = tonumber(...")
 
m (p)
Line 1: Line 1:
function generateTimeList(weekday, start, finish)
local p = {}
 
function p.generateTimeList(weekday, start, finish)
   -- Define the time zones
   -- Define the time zones
   local utcOffset = 0
   local utcOffset = 0

Revision as of 18:07, 27 May 2023

Documentation for this module may be created at Module:Timetable/doc

local p = {}

function p.generateTimeList(weekday, start, finish)
  -- Define the time zones
  local utcOffset = 0
  local cestOffset = 2
  local mdtOffset = -6

  -- Parse the start and end times
  local startHour, startMinute = start:match("(%d+):(%d+)")
  local endHour, endMinute = finish:match("(%d+):(%d+)")
  
  -- Convert the start and end times to integers
  startHour = tonumber(startHour)
  startMinute = tonumber(startMinute)
  endHour = tonumber(endHour)
  endMinute = tonumber(endMinute)
  
  -- Calculate the adjusted start and end times for each time zone
  local utcStartHour = startHour
  local utcEndHour = endHour
  local cestStartHour = (startHour + cestOffset) % 24
  local cestEndHour = (endHour + cestOffset) % 24
  local mdtStartHour = (startHour + mdtOffset) % 24
  local mdtEndHour = (endHour + mdtOffset) % 24

  -- Adjust the day for time zones ahead of UTC
  if cestStartHour < startHour then
    weekday = (weekday + 1) % 7
  end
  
  if mdtStartHour < startHour then
    weekday = (weekday - 1) % 7
  end

  -- Format the output strings
  local output = {}
  local weekdayNames = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}
  
  output[1] = string.format("* %s %02d:%02d-%02d:%02d (UTC)", weekdayNames[weekday + 1], startHour, startMinute, endHour, endMinute)
  output[2] = string.format("* %s %02d:%02d-%02d:%02d (UTC+%d, CEST, Brussels)", weekdayNames[weekday + 1], cestStartHour, startMinute, cestEndHour, endMinute, cestOffset)
  output[3] = string.format("* %s %02d:%02d-%02d:%02d (UTC%d, MDT, Edmonton)", weekdayNames[(weekday - 1) % 7 + 1], mdtStartHour, startMinute, mdtEndHour, endMinute, mdtOffset)

  return table.concat(output, "\n")
end