JSMSolns
Published © GPL3+

Rotating Clock

Digital clock with network time sync. Display shows digital hours, minutes and seconds with an outer ring of LEDs for each second.

AdvancedFull instructions provided6 hours298
Rotating Clock

Things used in this project

Hardware components

Wemos D1 Mini
Espressif Wemos D1 Mini
×1
MAX7219 8 x 32 module (common anode)
×2
5 mm LED: Red
5 mm LED: Red
×66
Shadow Box Frame 25 x 25cm 3 cm deep Black
×1
Black card A3 or A2
×1
3D Printed framework
×6
5V 1A USB Power Supply
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Custom parts and enclosures

Fusion 360 CAD File

Fusion 360 CAD file of internal frame in 6 parts. Print each part individually.

Schematics

Rotating Clock Schematic

Code

RotatingClock_ESP8266_V2

Arduino
//Build using WEMOS D1 Mini (Clone)

//Change History
//V1.0  First working version
//V2.0  Changed to use the clock's own display to indicate OTA status and progress. 
//      Added Telnet spy to stream all serial output over Telnet. This saves taking the clock off the wall when debugging!


#define Version 2.0

//#define FIXED_INTERVALS 1  //if set, the 5 sec inteval points are always on, otherwise they only come on when that period is passed

//#define TESTING 1

//Rotating clock using NTP connection to keep track of time
//Uses WiFi Manager to establish initial Wifi credentials.


// Required libraries
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <WiFiManager.h>  
#include <time.h>
#include <sys/time.h>                   // struct timeval
#include <sntp.h>                       // sntp_servermode_dhcp()
//#include <TZ.h>
#include <coredecls.h>                  //   required for settimeofday_cb()
#include <TickTwo.h>
#include <TelnetSpy.h>

#include "TZ_Setting.h"
#include "TZones.h"

#include <MD_MAX72xx.h>
#include <SPI.h>


TelnetSpy SerialAndTelnet;
//#define TSerial  Serial  //uncomment this line and comment out the next line for non-Telnet serial
#define TSerial  SerialAndTelnet

#ifdef TESTING
  #define OTA_NETWORK_NAME "RotatingClock_TEST"
  #define WIFI_MANAGER_AP "RotatingClockAP_TEST"
#else
  #define OTA_NETWORK_NAME "RotatingClock"
  #define WIFI_MANAGER_AP "RotatingClockAP"
#endif


#define DELAYTIME 50   //100ms scroll time

#include "Font5x7.h"
#define USE_LOCAL_FONT 1
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4

#define CLK_PIN   D5
#define DATA_PIN  D7
#define CS_PIN    D8
#define CS_PIN2    D2

#define COL_HRS_MS 29 
#define COL_HRS_LS 23 
#define COL_MINS_MS 12
#define COL_MINS_LS 6
#define COL_SECS_MS 12 //45
#define COL_SECS_LS 6 //38
#define COL_SEP 16
#define COL_ROTATING_SECS_START 16
#define COL_INTERVALS_SECS_START 24

#define MIN_BRIGHTNESS 0  //0 is minimum brightness, 15 is maximum brightness (brightness also set by Iset resistor)
#define MAX_BRIGHTNESS 3


#define RTC_UTC_TEST 1510592825 // 1510592825 = Monday 13 November 2017 17:07:05 UTC

void ClockTimer();
void ColonOff();
extern "C" int clock_gettime(clockid_t unused, struct timespec *tp);

// Timing parameters
int data_update_seconds = 1;            // measurement interval in seconds
time_t present_timestamp;
time_t previous_timestamp = 0;
int PreviousHours = 66;
int PreviousMinutes = 66;
int PreviousSeconds = 66;
int CurrentBrightness;
bool InitialUpdate = true;
bool DisplayShutdown = false;

MD_MAX72XX MainClockDisplay = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
MD_MAX72XX SecondsDisplay = MD_MAX72XX(HARDWARE_TYPE, CS_PIN2,4 );


WiFiManager wm;

static timeval tv;
static timespec tp;
static time_t now;
struct tm *timeinfo;

bool TimeIsInSync = false;

TickTwo ColonTimer(ColonOff, 500,1,MILLIS);
// ....................................................................................
 
void time_is_set (void)
// callback routine - arrive here whenever a successful NTP update has occurred
{
  struct tm *tmp ;                      // NOTE: structure tm is defined in time.h
 
  char UPDATE_TIME[50];                 // buffer for use by strftime()
    
  // display time when NTP update occurred
  time_t tnow = time(nullptr);          // get UNIX timestamp 
  tmp = localtime(&tnow);               // convert to local time and break down
  strftime(UPDATE_TIME, sizeof(UPDATE_TIME), "%T", tmp);  // extract just the 'time' portion
    
  TSerial.print("\n-------- NTP update at ");
  TSerial.print(UPDATE_TIME);
  TSerial.println(" --------");
  if ((tmp->tm_year + 1900) != 2017)
     TimeIsInSync = true;
}


// ....................................................................................
void displayDateAndTime()
{
  TSerial.print(present_timestamp);      // display system time as UNIX timestamp
  
  // use ctime() to convert the system (UNIX) time to a local date and time in readable form
  // NOTE: 'ctime' produces a output in a specific format that looks 
  //        like --> Fri Mar 22 12:11:51 2019  -there is also a newline (\n) appended
  TSerial.print("  ");
  TSerial.print(ctime(&present_timestamp));  // convert timestamp and display
  
  struct tm *tmp ;                          // NOTE: structure tm is defined in time.h
  char FORMATTED_TIME[50];                  //   filled by strftime()
    
  // convert the system (UNIX) time to a local date and time in a configurable format

  tmp = localtime(&present_timestamp);      // break down the timestamp     
      
  // use strftime() to display the date and time in some other formats
  // https://www.geeksforgeeks.org/strftime-function-in-c/ 

  // the following gives output in this form -->  03/22/19 - 12:11 pm EDT
    //   where %x --> writes localized date representation
    //         %I --> writes hour as a decimal number, 12 hour clock (range [01,12])

    //         %M --> writes minute as a decimal number (range [00,59]) 
    //         %P --> writes localized a.m. or p.m. (locale dependent)
    //         %Z --> time zone abbreviation name
  strftime(FORMATTED_TIME, sizeof(FORMATTED_TIME), "%x - %I:%M%P %Z", tmp);  
  TSerial.println(FORMATTED_TIME);
 
  // the following gives output in this form -->  2019-03-22 12:11:51
    //         %F --> equivalent to "%Y-%m-%d" (the ISO 8601 date format)     
    //         %T --> equivalent to "%H:%M:%S" (the ISO 8601 time format) 
  strftime(FORMATTED_TIME, sizeof(FORMATTED_TIME), "%F %T", tmp);
  TSerial.println(FORMATTED_TIME);
    
  TSerial.println();
}

void ClearDisplay()
{

   MainClockDisplay.clear();
   SecondsDisplay.clear();
  
}

void ClockDisplayShutdown()
{
  byte i;
  
  for (i=0;i<=3;i++)
  {
     MainClockDisplay.control(i, MD_MAX72XX::SHUTDOWN, MD_MAX72XX::ON);
     SecondsDisplay.control(i, MD_MAX72XX::SHUTDOWN, MD_MAX72XX::ON);
  }
}

void ClockDisplayTurnOn()
{
  byte i;
  
  for (i=0;i<=3;i++)
  {
     MainClockDisplay.control(i, MD_MAX72XX::SHUTDOWN, MD_MAX72XX::OFF);
     SecondsDisplay.control(i, MD_MAX72XX::SHUTDOWN, MD_MAX72XX::OFF);
  }  
}

void scrollText(const char *p)
{

  uint8_t charWidth;
  uint8_t cBuf[8];  // this should be ok for all built-in fonts

  //PRINTS("\nScrolling text");
  MainClockDisplay.clear();

  while (*p != '\0')
  {
    charWidth = MainClockDisplay.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf);

    for (uint8_t i=0; i<=charWidth; i++)  // allow space between characters
    {
      MainClockDisplay.transform(MD_MAX72XX::TSL);
      if (i < charWidth)
        MainClockDisplay.setColumn(0, cBuf[i]);
      delay(DELAYTIME);
    }
  }
}



void ColonOff()
{
   MainClockDisplay.setChar(COL_SEP,32);  //blank the colon after 500ms
}


void DisplayFixedIntervals()
{
  SecondsDisplay.update(MD_MAX72XX::OFF); 
  
  SecondsDisplay.clear(3,3);
  SecondsDisplay.setColumn(COL_INTERVALS_SECS_START,0xFF);
  SecondsDisplay.setColumn(COL_INTERVALS_SECS_START+1,0xFF);


        
  SecondsDisplay.update();
  SecondsDisplay.update(MD_MAX72XX::ON);  
}

void SetOuterLEDs(int Seconds)
{
    byte c,r,s;
    
    if (Seconds >= 60)
    {
      Seconds = Seconds % 60;
    }
    SecondsDisplay.clear(2,2);

    
   for (s = 0,r=0,c=0;s<= Seconds;s++)
   {
      SecondsDisplay.setPoint(r,COL_ROTATING_SECS_START + c,true);
      if ( (s+1)%15 == 0)
      {
        c++;
        r=0;
      }
      else
      {
        if ((r+1)%8 == 0)
        {
          c++;
          r=0;
        }
        else
        {
          r++;
        }
      }
   }
}


void SetIntervalLEDs(byte IntervalCount)
{
   byte c,r,s;
   
   for (s = 0,r=0,c=0;s<= IntervalCount;s++)
   {         
      
     SecondsDisplay.setPoint(r,COL_INTERVALS_SECS_START + c,true);
     if ((r+1)%8 == 0)
     {
        c++;
        r=0;
     }
     else
     {
       r++;
     }
   }
}

void UpdateDisplay()
{
    byte col, row;
    int Hours;
    int Minutes;
    int Seconds;
    byte c,r,s,Rows;
    byte IntervalCount;
    
    time(&now);
    timeinfo = localtime(&now);

    Hours = timeinfo->tm_hour;
    Minutes = timeinfo->tm_min;
    Seconds = timeinfo->tm_sec;

    if (InitialUpdate)
    {
      TSerial.print("UpdateDisplay: Time displayed = ");
      if (Hours < 10)
      {
         TSerial.print("0");
      }
      TSerial.print(Hours);
      TSerial.print(":");
      if (Minutes < 10)
      {
         TSerial.print("0");         
      }
      TSerial.print(Minutes);
      TSerial.print(":");
      if (Seconds < 10)
      {
         TSerial.print("0");         
      }
      TSerial.println(Seconds);

      InitialUpdate = false;
    }

    if ((Hours >= 1) && (Hours <= 6))
    {//shut down out of hours
      if (DisplayShutdown == false)
      {
         ClockDisplayShutdown();
         DisplayShutdown = true;
      }
      return;
    }
    else
    {
      if (DisplayShutdown == true)
      {
         ClockDisplayTurnOn();
         DisplayShutdown = false;
      }     
    }



    if ((Hours >= 8) && (Hours <= 17))
    {
       CurrentBrightness = MAX_BRIGHTNESS;   //max brightness during daylight hours
    }
    else
    {
        CurrentBrightness = MIN_BRIGHTNESS;  //min brightness overnight
    }
    

    if ((Hours != PreviousHours) || (Minutes != PreviousMinutes))
    {//only update the main display if required (i.e. every minute...)
      MainClockDisplay.update(MD_MAX72XX::OFF);
  
      MainClockDisplay.setChar(COL_HRS_MS,0x30+(Hours/10));
      MainClockDisplay.setChar(COL_HRS_LS,0x30+(Hours%10));
      MainClockDisplay.setChar(COL_SEP,58);
      MainClockDisplay.setChar(COL_MINS_MS,0x30+(Minutes/10));
      MainClockDisplay.setChar(COL_MINS_LS,0x30+(Minutes%10));


      MainClockDisplay.control(MD_MAX72XX::INTENSITY, CurrentBrightness);
      MainClockDisplay.update();
      MainClockDisplay.update(MD_MAX72XX::ON);

      PreviousHours = Hours;
      PreviousMinutes = Minutes;
    }

    SecondsDisplay.update(MD_MAX72XX::OFF);
    
    SecondsDisplay.setChar(COL_SECS_MS,(Seconds/10));
    SecondsDisplay.setChar(COL_SECS_LS,(Seconds%10));


    //leds around the circumference...
    //col = Seconds/8;
    //row = Seconds%8;


    if (Seconds == 0)
    {
      
       #ifdef FIXED_INTERVALS
          SecondsDisplay.clear(2,2); //clear outer ring only (seconds)
          SecondsDisplay.setPoint(0,COL_ROTATING_SECS_START,true); //set top of the clock seconds
          MainClockDisplay.setChar(COL_SEP,58);
       #else
          SecondsDisplay.clear(2,3);
          SecondsDisplay.setPoint(0,COL_ROTATING_SECS_START,true); //top of the clock seconds
          SecondsDisplay.setPoint(0,COL_INTERVALS_SECS_START,true); //top of the clock Interval 
          MainClockDisplay.setChar(COL_SEP,58);        
       #endif
       
    }
    else
    {
       MainClockDisplay.setChar(COL_SEP,58);
       SetOuterLEDs(Seconds);
       
       //moving intervals....
       #ifndef FIXED_INTERVALS
         SecondsDisplay.clear(3,3);
         IntervalCount = (Seconds/5);
         SetIntervalLEDs(IntervalCount);   
         
       #endif

    
    

    }

    
    SecondsDisplay.control(MD_MAX72XX::INTENSITY, CurrentBrightness);
    
    SecondsDisplay.update();
    SecondsDisplay.update(MD_MAX72XX::ON);

    //put the time of day out to serial port...
    if (Seconds == 0)
    {
      if (Hours < 10)
      {
         TSerial.print("0");
      }
      TSerial.print(Hours);
      TSerial.print(":");
      if (Minutes < 10)
      {
         TSerial.print("0");         
      }
      TSerial.println(Minutes);


    }
}

void configModeCallback(WiFiManager *myWiFiManager)
{
   scrollText("No default WiFi found. Entering AP config mode...    ");
   TSerial.println("Entered Access Point config mode. Connect to 'RotatingClockAP' using phone/iPad");
}



// ....................................................................................
 
void setup()
{
  WiFi.persistent(false);
  WiFi.mode(WIFI_OFF);
  
  TSerial.begin(115200);
  delay(800);
  

  MainClockDisplay.begin();
  SecondsDisplay.begin();

  ClockDisplayTurnOn();
  ClearDisplay();
  
  MainClockDisplay.setFont(FontDigits5x7);
  SecondsDisplay.setFont(FontDigits5x7);
  //P.displayText(M[curM].pMsg, PA_CENTER, P.getSpeed(), PAUSE_TIME, PA_SCROLL_LEFT, PA_SCROLL_LEFT);


  CurrentBrightness = MAX_BRIGHTNESS;
  
  MainClockDisplay.control(MD_MAX72XX::INTENSITY, CurrentBrightness);
  SecondsDisplay.control(MD_MAX72XX::INTENSITY, CurrentBrightness);



  TimeIsInSync = false;
  
  // make sure the ESP8266 WiFi functions are enabled
  WiFi.mode(WIFI_STA);                  // use only the WiFi 'station' mode
  

  bool res;
  scrollText("Connecting to WiFi...    ");

  //wm.setConfigPortalBlocking(false);
  wm.setAPCallback(configModeCallback);
  wm.setTimeout(600);
  
  res = wm.autoConnect(WIFI_MANAGER_AP);
  if (res == false)
  {
    TSerial.println("Failed to connect and hit the timeout. Restarting...");
    delay(1000);
    ESP.restart();
  }

  while (WiFi.status() != WL_CONNECTED) // wait for connection
  {
    //delay(500);
    TSerial.print(".");
    scrollText("Connecting to WiFi...");
    delay(300);
  } 
  ClearDisplay();
 
  TSerial.println("\nWifi Connected");
  scrollText("WiFi Connected OK!"); 

  ClearDisplay(); 



  //ArduinoOTA.setHostname("RotatingClock");
  ArduinoOTA.setHostname(OTA_NETWORK_NAME);

  
  ArduinoOTA.onStart([]() {
    String type;
    ClearDisplay();
    if (ArduinoOTA.getCommand() == U_FLASH) {
      type = "sketch";
    } else { // U_FS
      type = "filesystem";
    }
    scrollText("S/W Update");

    // NOTE: if updating FS this would be the place to unmount FS using FS.end()
    TSerial.println("Start updating " + type);
  });
  ArduinoOTA.onEnd([]() {
    TSerial.println("\nEnd");   
  });
  
  
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    unsigned int OTA_Percent;
    unsigned int OTA_RotProgress;
    OTA_Percent = (progress / (total / 100));
    TSerial.printf("Progress: %u%%\r",OTA_Percent );
    OTA_RotProgress = map(OTA_Percent,0,100,0,59);
    SetOuterLEDs(OTA_RotProgress);
    if (OTA_Percent < 100)
    {
       SecondsDisplay.setChar(COL_SECS_MS,(OTA_Percent/10));
       SecondsDisplay.setChar(COL_SECS_LS,(OTA_Percent%10));
    }
    else
    {
       SecondsDisplay.clear();
       scrollText("Update Completed");
    }
  });
  ArduinoOTA.onError([](ota_error_t error) {
    TSerial.printf("Error[%u]: ", error);
    scrollText("Update Error");
    if (error == OTA_AUTH_ERROR) {
      TSerial.println("Auth Failed");
    } else if (error == OTA_BEGIN_ERROR) {
      TSerial.println("Begin Failed");
    } else if (error == OTA_CONNECT_ERROR) {
      TSerial.println("Connect Failed");
    } else if (error == OTA_RECEIVE_ERROR) {
      TSerial.println("Receive Failed");
    } else if (error == OTA_END_ERROR) {
      TSerial.println("End Failed");
    }
  });
  ArduinoOTA.begin();
  yield();

   // register a callback (execute whenever an NTP update has occurred)
  TSerial.println("Setting NTP callback function");
  settimeofday_cb(time_is_set);
  
  TSerial.println("Manually setting default time for RTC:");
  time_t rtc = RTC_UTC_TEST;
  timeval tv = { rtc, 0 };
  
  settimeofday(&tv, nullptr);

  //time(&now);
  //timeinfo = localtime(&now);

  TSerial.println("Waiting for network time sync...");
  scrollText("Waiting for network time...");


  TSerial.println("Setting config time");
  configTime(MYTZ, "pool.ntp.org");
  
  while (TimeIsInSync == false )
  {
     ArduinoOTA.handle(); 
     scrollText("Waiting...");
     delay(50);
     yield();
  }
  ClearDisplay();
  TSerial.println("Time now in sync with NTP");
  scrollText("Time is in sync");
  delay(1000);
  ClearDisplay();


  #ifdef FIXED_INTERVALS
     DisplayFixedIntervals();
  #endif

}

// ....................................................................................
 
void loop()
{
  unsigned long t1;
  byte i;
  
  ArduinoOTA.handle();
  SerialAndTelnet.handle();

  ColonTimer.update();
  
  present_timestamp = time(nullptr);

  if (present_timestamp >= previous_timestamp + (data_update_seconds)) 
  {
    previous_timestamp = present_timestamp;
    ColonTimer.start();
    UpdateDisplay();

  } 

  //overcomes occasional display shutoffs for no apparent reason!
  if (DisplayShutdown == false)
  {
     //ClockDisplayShutdown();
     //delayMicroseconds(100);
     ClockDisplayTurnOn();   
  }
  
    
}

Font5x7

C Header File
#pragma once

MD_MAX72XX::fontType_t FontDigits5x7[] PROGMEM = {
  'F', 1, 0, 255, 8,
  4, 62, 34, 34, 62,    // 0
  4, 0, 36, 62, 32,   // 1
  4, 36, 50, 42, 36,    // 2
  4, 34, 42, 42, 62,    // 3
  4, 30, 16, 56, 16,    // 4
  4, 46, 42, 42, 58,    // 5
  4, 62, 42, 42, 58,    // 6
  4, 34, 18, 10, 6,   // 7
  4, 62, 42, 42, 62,    // 8
  4, 14, 10, 10, 62,    // 9
  0,    // 10
  0,    // 11
  0,    // 12
  0,    // 13
  0,    // 14
  0,    // 15
  1, 255,   // 16 - 'Bars'
  2, 255, 255,    // 17 - 'Bars'
  3, 255, 255, 255,   // 18 - 'Bars'
  4, 255, 255, 255, 255,    // 19 - 'Bars'
  5, 255, 255, 255, 255, 255,   // 20 - 'Bars'
  5, 0, 255, 255, 255, 255,   // 21 - 'Bars'
  5, 0, 0, 255, 255, 255,   // 22 - 'Bars'
  5, 0, 0, 0, 255, 255,   // 23 - 'Bars'
  5, 0, 0, 0, 0, 255,   // 24 - 'Bars'
  5, 96, 112, 63, 2, 28,    // 25 - 'Musical Note'
  5, 3, 51, 72, 72, 72,   // 26 - 'Deg C'
  5, 3, 123, 40, 40, 8,   // 27 - 'Deg F'
  5, 4, 12, 28, 12, 4,    // 28 - 'Down Pointer'
  3, 62, 28, 8,   // 29 - 'Right Pointer'
  3, 8, 28, 62,   // 30 - 'Left Pointer'
  5, 16, 24, 28, 24, 16,    // 31 - 'Up Pointer'
  2, 0, 0,    // 32 - 'Space'
  1, 95,    // 33 - '!'
  3, 7, 0, 7,   // 34 - '"'
  5, 20, 127, 20, 127, 20,    // 35 - '#'
  5, 36, 42, 127, 42, 18,   // 36 - '$'
  5, 35, 19, 8, 100, 98,    // 37 - '%'
  5, 54, 73, 85, 34, 80,    // 38 - '&'
  3, 0, 5, 3,   // 39 - '''
  3, 28, 34, 65,    // 40 - '('
  3, 65, 34, 28,    // 41 - ')'
  5, 20, 8, 62, 8, 20,    // 42 - '*'
  5, 8, 8, 62, 8, 8,    // 43 - '+'
  2, 160, 96,   // 44 - ','
  5, 8, 8, 8, 8, 8,   // 45 - '-'
  2, 96, 96,    // 46 - '.'
  5, 32, 16, 8, 4, 2,   // 47 - '/'
  5, 62, 65, 65, 65, 62,    // 48 - '0'
  5, 0, 66, 127, 64, 0,   // 49 - '1'
  5, 66, 97, 81, 73, 70,    // 50 - '2'
  5, 34, 65, 73, 73, 54,    // 51 - '3'
  5, 24, 20, 18, 127, 16,   // 52 - '4'
  5, 47, 73, 73, 73, 49,    // 53 - '5'
  5, 60, 74, 73, 73, 48,    // 54 - '6'
  5, 1, 113, 9, 5, 3,   // 55 - '7'
  5, 54, 73, 73, 73, 54,    // 56 - '8'
  5, 6, 73, 73, 73, 62,   // 57 - '9'
  2, 20, 20,    // 58 - ':'
  2, 172, 108,    // 59 - ';'
  4, 8, 20, 34, 65,   // 60 - '<'
  5, 20, 20, 20, 20, 20,    // 61 - '='
  4, 65, 34, 20, 8,   // 62 - '>'
  5, 2, 1, 81, 9, 6,    // 63 - '?'
  5, 50, 73, 121, 65, 62,   // 64 - '@'
  5, 126, 17, 17, 17, 126,    // 65 - 'A'
  5, 127, 73, 73, 73, 54,   // 66 - 'B'
  5, 62, 65, 65, 65, 34,    // 67 - 'C'
  5, 127, 65, 65, 34, 28,   // 68 - 'D'
  5, 127, 73, 73, 73, 65,   // 69 - 'E'
  5, 127, 9, 9, 9, 1,   // 70 - 'F'
  5, 62, 65, 73, 73, 122,   // 71 - 'G'
  5, 127, 8, 8, 8, 127,   // 72 - 'H'
  3, 65, 127, 65,   // 73 - 'I'
  5, 32, 64, 65, 63, 1,   // 74 - 'J'
  5, 127, 8, 20, 34, 65,    // 75 - 'K'
  5, 127, 64, 64, 64, 64,   // 76 - 'L'
  5, 127, 2, 12, 2, 127,    // 77 - 'M'
  5, 127, 4, 8, 16, 127,    // 78 - 'N'
  5, 62, 65, 65, 65, 62,    // 79 - 'O'
  5, 127, 9, 9, 9, 6,   // 80 - 'P'
  5, 62, 65, 81, 33, 94,    // 81 - 'Q'
  5, 127, 9, 25, 41, 70,    // 82 - 'R'
  5, 70, 73, 73, 73, 49,    // 83 - 'S'
  5, 1, 1, 127, 1, 1,   // 84 - 'T'
  5, 63, 64, 64, 64, 63,    // 85 - 'U'
  5, 31, 32, 64, 32, 31,    // 86 - 'V'
  5, 63, 64, 56, 64, 63,    // 87 - 'W'
  5, 99, 20, 8, 20, 99,   // 88 - 'X'
  5, 7, 8, 112, 8, 7,   // 89 - 'Y'
  5, 97, 81, 73, 69, 67,    // 90 - 'Z'
  3, 127, 65, 65,   // 91 - '['
  5, 2, 4, 8, 16, 32,   // 92 - '\'
  3, 65, 65, 127,   // 93 - ']'
  5, 4, 2, 1, 2, 4,   // 94 - '^'
  5, 64, 64, 64, 64, 64,    // 95 - '_'
  3, 1, 2, 4,   // 96 - '`'
  5, 32, 84, 84, 84, 120,   // 97 - 'a'
  5, 127, 80, 72, 72, 48,   // 98 - 'b'
  5, 56, 68, 68, 68, 32,    // 99 - 'c'
  5, 48, 72, 72, 80, 127,   // 100 - 'd'
  5, 56, 84, 84, 84, 24,    // 101 - 'e'
  5, 8, 126, 9, 1, 2,   // 102 - 'f'
  5, 24, 164, 164, 164, 124,    // 103 - 'g'
  5, 127, 8, 4, 4, 120,   // 104 - 'h'
  1, 122,   // 105 - 'i'
  4, 64, 128, 136, 122,   // 106 - 'j'
  4, 127, 16, 40, 68,   // 107 - 'k'
  3, 65, 127, 64,   // 108 - 'l'
  5, 124, 4, 24, 4, 120,    // 109 - 'm'
  5, 124, 8, 4, 4, 120,   // 110 - 'n'
  5, 56, 68, 68, 68, 56,    // 111 - 'o'
  5, 248, 40, 36, 36, 24,   // 112 - 'p'
  5, 24, 36, 36, 40, 248,   // 113 - 'q'
  5, 124, 8, 4, 4, 8,   // 114 - 'r'
  5, 72, 84, 84, 84, 32,    // 115 - 's'
  5, 4, 63, 68, 64, 32,   // 116 - 't'
  5, 60, 64, 64, 32, 124,   // 117 - 'u'
  5, 28, 32, 64, 32, 28,    // 118 - 'v'
  5, 60, 64, 48, 64, 60,    // 119 - 'w'
  5, 68, 40, 16, 40, 68,    // 120 - 'x'
  5, 76, 144, 144, 144, 124,    // 121 - 'y'
  5, 68, 100, 84, 76, 68,   // 122 - 'z'
  3, 8, 54, 65,   // 123 - '{'
  1, 127,   // 124 - '|'
  3, 65, 54, 8,   // 125 - '}'
  5, 8, 8, 42, 28, 8,   // 126 - 'Right Arrow'
  5, 8, 28, 42, 8, 8,   // 127 - 'Left Arrow'
  0,    // 128
  0,    // 129
  0,    // 130
  0,    // 131
  0,    // 132
  0,    // 133
  0,    // 134
  0,    // 135
  0,    // 136
  0,    // 137
  0,    // 138
  0,    // 139
  0,    // 140
  0,    // 141
  0,    // 142
  0,    // 143
  0,    // 144
  5, 28, 62, 62, 62, 28,    // 145 - 'Filled ball'
  5, 28, 34, 34, 34, 28,    // 146 - 'Empty ball'
  5, 8, 28, 62, 28, 8,    // 147 - 'Filled diamond'
  5, 8, 20, 34, 20, 8,    // 148 - 'Empty diamond'
  1, 119,   // 149 - 'Pipe'
  5, 28, 162, 98, 34, 34,   // 150 - 'C sedilla'
  5, 96, 80, 72, 68, 126,   // 151 - 'Triangle'
  5, 64, 68, 74, 81, 64,    // 152 - '<='
  5, 64, 81, 74, 68, 64,    // 153 - '>='
  5, 16, 56, 84, 16, 31,    // 154 - 'Return'
  5, 4, 2, 127, 2, 4,   // 155 - 'Up Arrow'
  5, 16, 32, 127, 32, 16,   // 156 - 'Down Arrow'
  0,    // 157
  0,    // 158
  0,    // 159
  0,    // 160
  3, 112, 80, 112,    // 161
  3, 15, 1, 1,    // 162
  3, 64, 64, 120,   // 163
  3, 16, 32, 64,    // 164
  2, 96, 96,    // 165
  5, 10, 10, 74, 42, 30,    // 166
  5, 66, 50, 18, 10, 6,   // 167
  5, 32, 16, 8, 124, 2,   // 168
  5, 24, 8, 76, 72, 56,   // 169
  5, 72, 72, 120, 72, 72,   // 170
  5, 72, 40, 24, 124, 8,    // 171
  5, 8, 124, 8, 40, 24,   // 172
  5, 64, 72, 72, 120, 64,   // 173
  5, 84, 84, 84, 84, 124,   // 174
  5, 24, 0, 88, 64, 56,   // 175
  5, 8, 8, 8, 8, 8,   // 176
  5, 1, 65, 61, 9, 7,   // 177
  5, 16, 8, 124, 2, 1,    // 178
  5, 14, 2, 67, 34, 30,   // 179
  5, 66, 66, 126, 66, 66,   // 180
  5, 34, 18, 10, 127, 2,    // 181
  5, 66, 63, 2, 66, 62,   // 182
  5, 10, 10, 127, 10, 10,   // 183
  5, 8, 70, 66, 34, 30,   // 184
  5, 4, 3, 66, 62, 2,   // 185
  5, 66, 66, 66, 66, 126,   // 186
  5, 2, 79, 34, 31, 2,    // 187
  5, 74, 74, 64, 32, 28,    // 188
  5, 66, 34, 18, 42, 70,    // 189
  5, 2, 63, 66, 74, 70,   // 190
  5, 6, 72, 64, 32, 30,   // 191
  5, 8, 70, 74, 50, 30,   // 192
  5, 10, 74, 62, 9, 8,    // 193
  5, 14, 0, 78, 32, 30,   // 194
  5, 4, 69, 61, 5, 4,   // 195
  3, 127, 8, 16,    // 196
  5, 68, 36, 31, 4, 4,    // 197
  5, 32, 34, 34, 34, 32,    // 198
  5, 66, 42, 18, 42, 6,   // 199
  5, 34, 18, 123, 22, 34,   // 200
  3, 64, 32, 31,    // 201
  5, 120, 0, 2, 4, 120,   // 202
  5, 63, 68, 68, 68, 68,    // 203
  5, 2, 66, 66, 34, 30,   // 204
  5, 4, 2, 4, 8, 48,    // 205
  5, 50, 2, 127, 2, 50,   // 206
  5, 2, 18, 34, 82, 14,   // 207
  4, 42, 42, 42, 64,    // 208
  5, 56, 36, 34, 32, 112,   // 209
  5, 64, 40, 16, 40, 6,   // 210
  5, 10, 62, 74, 74, 74,    // 211
  5, 4, 127, 4, 20, 12,   // 212
  6, 64, 66, 66, 126, 64, 64,   // 213
  5, 74, 74, 74, 74, 126,   // 214
  5, 4, 5, 69, 37, 28,    // 215
  4, 15, 64, 32, 31,    // 216
  5, 124, 0, 126, 64, 48,   // 217
  5, 126, 64, 32, 16, 8,    // 218
  5, 126, 66, 66, 66, 126,    // 219
  5, 14, 2, 66, 34, 30,   // 220
  5, 66, 66, 64, 32, 24,    // 221
  4, 4, 8, 2, 4,    // 222
  3, 14, 10, 14,    // 223
  5, 56, 68, 72, 48, 76,    // 224 - 'Alpha'
  5, 32, 85, 84, 85, 120,   // 225 - 'a umlaut'
  5, 252, 42, 42, 42, 20,   // 226 - 'Beta'
  5, 40, 84, 84, 68, 32,    // 227 - 'Epsilon'
  5, 252, 32, 32, 16, 60,   // 228 - 'mu'
  5, 56, 68, 76, 84, 36,    // 229 - 'sigma'
  5, 240, 40, 36, 36, 24,   // 230 - 'rho'
  5, 16, 168, 168, 168, 120,    // 231 - 'g'
  5, 32, 64, 62, 2, 2,    // 232 - 'square root'
  4, 4, 4, 0, 14,   // 233
  4, 64, 128, 136, 122,   // 234 - 'j'
  3, 5, 2, 5,   // 235 - 'asterisk note'
  5, 24, 36, 126, 36, 16,   // 236 - 'cents'
  5, 20, 127, 84, 64, 64,   // 237 - 'pound sterling'
  5, 124, 9, 5, 5, 120,   // 238 - 'n accent'
  5, 56, 69, 68, 69, 56,    // 239 - 'o umlaut'
  5, 252, 40, 36, 36, 24,   // 240 - 'p'
  5, 24, 36, 36, 40, 252,   // 241 - 'q'
  5, 62, 69, 69, 69, 62,    // 242 - 'Theta'
  5, 48, 40, 16, 40, 24,    // 243 - 'infinity'
  5, 88, 100, 4, 100, 88,   // 244
  5, 60, 65, 64, 33, 124,   // 245 - 'u umlaut'
  5, 99, 85, 73, 65, 65,    // 246 - 'Sigma upper'
  5, 66, 62, 2, 126, 66,    // 247 - 'Pi'
  5, 69, 41, 17, 41, 69,    // 248 - 'x bar'
  5, 24, 160, 160, 160, 120,    // 249 - 'y'
  5, 20, 20, 124, 20, 18,   // 250
  5, 68, 60, 20, 20, 116,   // 251 - 'Exit (jap)'
  5, 124, 20, 28, 20, 124,    // 252 - 'Entrance (jap)'
  5, 8, 8, 42, 8, 8,    // 253 - 'divide'
  0,    // 254
  5, 127, 127, 127, 127, 127,   // 255 - '5x7 block'
};

TZ_Setting

C Header File
#define MYTZ TZones[TZN_Europe_London]
#define DST_TIMEZONE "GMT0BST,M3.5.0/1,M10.5.0"  //Europe London
//#define DST_TIMEZONE TZ_Europe_London

TZones

C Header File
enum TZNames{
TZN_Africa_Abidjan,
TZN_Africa_Accra,
TZN_Africa_Addis_Ababa,
TZN_Africa_Algiers,
TZN_Africa_Asmara,
TZN_Africa_Bamako,
TZN_Africa_Bangui,
TZN_Africa_Banjul,
TZN_Africa_Bissau,
TZN_Africa_Blantyre,
TZN_Africa_Brazzaville,
TZN_Africa_Bujumbura,
TZN_Africa_Cairo,
TZN_Africa_Casablanca,
TZN_Africa_Ceuta,
TZN_Africa_Conakry,
TZN_Africa_Dakar,
TZN_Africa_Dar_es_Salaam,
TZN_Africa_Djibouti,
TZN_Africa_Douala,
TZN_Africa_El_Aaiun,
TZN_Africa_Freetown,
TZN_Africa_Gaborone,
TZN_Africa_Harare,
TZN_Africa_Johannesburg,
TZN_Africa_Juba,
TZN_Africa_Kampala,
TZN_Africa_Khartoum,
TZN_Africa_Kigali,
TZN_Africa_Kinshasa,
TZN_Africa_Lagos,
TZN_Africa_Libreville,
TZN_Africa_Lome,
TZN_Africa_Luanda,
TZN_Africa_Lubumbashi,
TZN_Africa_Lusaka,
TZN_Africa_Malabo,
TZN_Africa_Maputo,
TZN_Africa_Maseru,
TZN_Africa_Mbabane,
TZN_Africa_Mogadishu,
TZN_Africa_Monrovia,
TZN_Africa_Nairobi,
TZN_Africa_Ndjamena,
TZN_Africa_Niamey,
TZN_Africa_Nouakchott,
TZN_Africa_Ouagadougou,
TZN_Africa_PortomNovo,
TZN_Africa_Sao_Tome,
TZN_Africa_Tripoli,
TZN_Africa_Tunis,
TZN_Africa_Windhoek,
TZN_America_Adak,
TZN_America_Anchorage,
TZN_America_Anguilla,
TZN_America_Antigua,
TZN_America_Araguaina,
TZN_America_Argentina_Buenos_Aires,
TZN_America_Argentina_Catamarca,
TZN_America_Argentina_Cordoba,
TZN_America_Argentina_Jujuy,
TZN_America_Argentina_La_Rioja,
TZN_America_Argentina_Mendoza,
TZN_America_Argentina_Rio_Gallegos,
TZN_America_Argentina_Salta,
TZN_America_Argentina_San_Juan,
TZN_America_Argentina_San_Luis,
TZN_America_Argentina_Tucuman,
TZN_America_Argentina_Ushuaia,
TZN_America_Aruba,
TZN_America_Asuncion,
TZN_America_Atikokan,
TZN_America_Bahia,
TZN_America_Bahia_Banderas,
TZN_America_Barbados,
TZN_America_Belem,
TZN_America_Belize,
TZN_America_BlancmSablon,
TZN_America_Boa_Vista,
TZN_America_Bogota,
TZN_America_Boise,
TZN_America_Cambridge_Bay,
TZN_America_Campo_Grande,
TZN_America_Cancun,
TZN_America_Caracas,
TZN_America_Cayenne,
TZN_America_Cayman,
TZN_America_Chicago,
TZN_America_Chihuahua,
TZN_America_Costa_Rica,
TZN_America_Creston,
TZN_America_Cuiaba,
TZN_America_Curacao,
TZN_America_Danmarkshavn,
TZN_America_Dawson,
TZN_America_Dawson_Creek,
TZN_America_Denver,
TZN_America_Detroit,
TZN_America_Dominica,
TZN_America_Edmonton,
TZN_America_Eirunepe,
TZN_America_El_Salvador,
TZN_America_Fortaleza,
TZN_America_Fort_Nelson,
TZN_America_Glace_Bay,
TZN_America_Godthab,
TZN_America_Goose_Bay,
TZN_America_Grand_Turk,
TZN_America_Grenada,
TZN_America_Guadeloupe,
TZN_America_Guatemala,
TZN_America_Guayaquil,
TZN_America_Guyana,
TZN_America_Halifax,
TZN_America_Havana,
TZN_America_Hermosillo,
TZN_America_Indiana_Indianapolis,
TZN_America_Indiana_Knox,
TZN_America_Indiana_Marengo,
TZN_America_Indiana_Petersburg,
TZN_America_Indiana_Tell_City,
TZN_America_Indiana_Vevay,
TZN_America_Indiana_Vincennes,
TZN_America_Indiana_Winamac,
TZN_America_Inuvik,
TZN_America_Iqaluit,
TZN_America_Jamaica,
TZN_America_Juneau,
TZN_America_Kentucky_Louisville,
TZN_America_Kentucky_Monticello,
TZN_America_Kralendijk,
TZN_America_La_Paz,
TZN_America_Lima,
TZN_America_Los_Angeles,
TZN_America_Lower_Princes,
TZN_America_Maceio,
TZN_America_Managua,
TZN_America_Manaus,
TZN_America_Marigot,
TZN_America_Martinique,
TZN_America_Matamoros,
TZN_America_Mazatlan,
TZN_America_Menominee,
TZN_America_Merida,
TZN_America_Metlakatla,
TZN_America_Mexico_City,
TZN_America_Miquelon,
TZN_America_Moncton,
TZN_America_Monterrey,
TZN_America_Montevideo,
TZN_America_Montreal,
TZN_America_Montserrat,
TZN_America_Nassau,
TZN_America_New_York,
TZN_America_Nipigon,
TZN_America_Nome,
TZN_America_Noronha,
TZN_America_North_Dakota_Beulah,
TZN_America_North_Dakota_Center,
TZN_America_North_Dakota_New_Salem,
TZN_America_Nuuk,
TZN_America_Ojinaga,
TZN_America_Panama,
TZN_America_Pangnirtung,
TZN_America_Paramaribo,
TZN_America_Phoenix,
TZN_America_PortmaumPrince,
TZN_America_Port_of_Spain,
TZN_America_Porto_Velho,
TZN_America_Puerto_Rico,
TZN_America_Punta_Arenas,
TZN_America_Rainy_River,
TZN_America_Rankin_Inlet,
TZN_America_Recife,
TZN_America_Regina,
TZN_America_Resolute,
TZN_America_Rio_Branco,
TZN_America_Santarem,
TZN_America_Santiago,
TZN_America_Santo_Domingo,
TZN_America_Sao_Paulo,
TZN_America_Scoresbysund,
TZN_America_Sitka,
TZN_America_St_Barthelemy,
TZN_America_St_Johns,
TZN_America_St_Kitts,
TZN_America_St_Lucia,
TZN_America_St_Thomas,
TZN_America_St_Vincent,
TZN_America_Swift_Current,
TZN_America_Tegucigalpa,
TZN_America_Thule,
TZN_America_Thunder_Bay,
TZN_America_Tijuana,
TZN_America_Toronto,
TZN_America_Tortola,
TZN_America_Vancouver,
TZN_America_Whitehorse,
TZN_America_Winnipeg,
TZN_America_Yakutat,
TZN_America_Yellowknife,
TZN_Antarctica_Casey,
TZN_Antarctica_Davis,
TZN_Antarctica_DumontDUrville,
TZN_Antarctica_Macquarie,
TZN_Antarctica_Mawson,
TZN_Antarctica_McMurdo,
TZN_Antarctica_Palmer,
TZN_Antarctica_Rothera,
TZN_Antarctica_Syowa,
TZN_Antarctica_Troll,
TZN_Antarctica_Vostok,
TZN_Arctic_Longyearbyen,
TZN_Asia_Aden,
TZN_Asia_Almaty,
TZN_Asia_Amman,
TZN_Asia_Anadyr,
TZN_Asia_Aqtau,
TZN_Asia_Aqtobe,
TZN_Asia_Ashgabat,
TZN_Asia_Atyrau,
TZN_Asia_Baghdad,
TZN_Asia_Bahrain,
TZN_Asia_Baku,
TZN_Asia_Bangkok,
TZN_Asia_Barnaul,
TZN_Asia_Beirut,
TZN_Asia_Bishkek,
TZN_Asia_Brunei,
TZN_Asia_Chita,
TZN_Asia_Choibalsan,
TZN_Asia_Colombo,
TZN_Asia_Damascus,
TZN_Asia_Dhaka,
TZN_Asia_Dili,
TZN_Asia_Dubai,
TZN_Asia_Dushanbe,
TZN_Asia_Famagusta,
TZN_Asia_Gaza,
TZN_Asia_Hebron,
TZN_Asia_Ho_Chi_Minh,
TZN_Asia_Hong_Kong,
TZN_Asia_Hovd,
TZN_Asia_Irkutsk,
TZN_Asia_Jakarta,
TZN_Asia_Jayapura,
TZN_Asia_Jerusalem,
TZN_Asia_Kabul,
TZN_Asia_Kamchatka,
TZN_Asia_Karachi,
TZN_Asia_Kathmandu,
TZN_Asia_Khandyga,
TZN_Asia_Kolkata,
TZN_Asia_Krasnoyarsk,
TZN_Asia_Kuala_Lumpur,
TZN_Asia_Kuching,
TZN_Asia_Kuwait,
TZN_Asia_Macau,
TZN_Asia_Magadan,
TZN_Asia_Makassar,
TZN_Asia_Manila,
TZN_Asia_Muscat,
TZN_Asia_Nicosia,
TZN_Asia_Novokuznetsk,
TZN_Asia_Novosibirsk,
TZN_Asia_Omsk,
TZN_Asia_Oral,
TZN_Asia_Phnom_Penh,
TZN_Asia_Pontianak,
TZN_Asia_Pyongyang,
TZN_Asia_Qatar,
TZN_Asia_Qyzylorda,
TZN_Asia_Riyadh,
TZN_Asia_Sakhalin,
TZN_Asia_Samarkand,
TZN_Asia_Seoul,
TZN_Asia_Shanghai,
TZN_Asia_Singapore,
TZN_Asia_Srednekolymsk,
TZN_Asia_Taipei,
TZN_Asia_Tashkent,
TZN_Asia_Tbilisi,
TZN_Asia_Tehran,
TZN_Asia_Thimphu,
TZN_Asia_Tokyo,
TZN_Asia_Tomsk,
TZN_Asia_Ulaanbaatar,
TZN_Asia_Urumqi,
TZN_Asia_UstmNera,
TZN_Asia_Vientiane,
TZN_Asia_Vladivostok,
TZN_Asia_Yakutsk,
TZN_Asia_Yangon,
TZN_Asia_Yekaterinburg,
TZN_Asia_Yerevan,
TZN_Atlantic_Azores,
TZN_Atlantic_Bermuda,
TZN_Atlantic_Canary,
TZN_Atlantic_Cape_Verde,
TZN_Atlantic_Faroe,
TZN_Atlantic_Madeira,
TZN_Atlantic_Reykjavik,
TZN_Atlantic_South_Georgia,
TZN_Atlantic_Stanley,
TZN_Atlantic_St_Helena,
TZN_Australia_Adelaide,
TZN_Australia_Brisbane,
TZN_Australia_Broken_Hill,
TZN_Australia_Currie,
TZN_Australia_Darwin,
TZN_Australia_Eucla,
TZN_Australia_Hobart,
TZN_Australia_Lindeman,
TZN_Australia_Lord_Howe,
TZN_Australia_Melbourne,
TZN_Australia_Perth,
TZN_Australia_Sydney,
TZN_Europe_Amsterdam,
TZN_Europe_Andorra,
TZN_Europe_Astrakhan,
TZN_Europe_Athens,
TZN_Europe_Belgrade,
TZN_Europe_Berlin,
TZN_Europe_Bratislava,
TZN_Europe_Brussels,
TZN_Europe_Bucharest,
TZN_Europe_Budapest,
TZN_Europe_Busingen,
TZN_Europe_Chisinau,
TZN_Europe_Copenhagen,
TZN_Europe_Dublin,
TZN_Europe_Gibraltar,
TZN_Europe_Guernsey,
TZN_Europe_Helsinki,
TZN_Europe_Isle_of_Man,
TZN_Europe_Istanbul,
TZN_Europe_Jersey,
TZN_Europe_Kaliningrad,
TZN_Europe_Kiev,
TZN_Europe_Kirov,
TZN_Europe_Lisbon,
TZN_Europe_Ljubljana,
TZN_Europe_London,
TZN_Europe_Luxembourg,
TZN_Europe_Madrid,
TZN_Europe_Malta,
TZN_Europe_Mariehamn,
TZN_Europe_Minsk,
TZN_Europe_Monaco,
TZN_Europe_Moscow,
TZN_Europe_Oslo,
TZN_Europe_Paris,
TZN_Europe_Podgorica,
TZN_Europe_Prague,
TZN_Europe_Riga,
TZN_Europe_Rome,
TZN_Europe_Samara,
TZN_Europe_San_Marino,
TZN_Europe_Sarajevo,
TZN_Europe_Saratov,
TZN_Europe_Simferopol,
TZN_Europe_Skopje,
TZN_Europe_Sofia,
TZN_Europe_Stockholm,
TZN_Europe_Tallinn,
TZN_Europe_Tirane,
TZN_Europe_Ulyanovsk,
TZN_Europe_Uzhgorod,
TZN_Europe_Vaduz,
TZN_Europe_Vatican,
TZN_Europe_Vienna,
TZN_Europe_Vilnius,
TZN_Europe_Volgograd,
TZN_Europe_Warsaw,
TZN_Europe_Zagreb,
TZN_Europe_Zaporozhye,
TZN_Europe_Zurich,
TZN_Indian_Antananarivo,
TZN_Indian_Chagos,
TZN_Indian_Christmas,
TZN_Indian_Cocos,
TZN_Indian_Comoro,
TZN_Indian_Kerguelen,
TZN_Indian_Mahe,
TZN_Indian_Maldives,
TZN_Indian_Mauritius,
TZN_Indian_Mayotte,
TZN_Indian_Reunion,
TZN_Pacific_Apia,
TZN_Pacific_Auckland,
TZN_Pacific_Bougainville,
TZN_Pacific_Chatham,
TZN_Pacific_Chuuk,
TZN_Pacific_Easter,
TZN_Pacific_Efate,
TZN_Pacific_Enderbury,
TZN_Pacific_Fakaofo,
TZN_Pacific_Fiji,
TZN_Pacific_Funafuti,
TZN_Pacific_Galapagos,
TZN_Pacific_Gambier,
TZN_Pacific_Guadalcanal,
TZN_Pacific_Guam,
TZN_Pacific_Honolulu,
TZN_Pacific_Kiritimati,
TZN_Pacific_Kosrae,
TZN_Pacific_Kwajalein,
TZN_Pacific_Majuro,
TZN_Pacific_Marquesas,
TZN_Pacific_Midway,
TZN_Pacific_Nauru,
TZN_Pacific_Niue,
TZN_Pacific_Norfolk,
TZN_Pacific_Noumea,
TZN_Pacific_Pago_Pago,
TZN_Pacific_Palau,
TZN_Pacific_Pitcairn,
TZN_Pacific_Pohnpei,
TZN_Pacific_Port_Moresby,
TZN_Pacific_Rarotonga,
TZN_Pacific_Saipan,
TZN_Pacific_Tahiti,
TZN_Pacific_Tarawa,
TZN_Pacific_Tongatapu,
TZN_Pacific_Wake,
TZN_Pacific_Wallis,
TZN_Etc_GMT,
TZN_Etc_GMTm0,
TZN_Etc_GMTm1,
TZN_Etc_GMTm2,
TZN_Etc_GMTm3,
TZN_Etc_GMTm4,
TZN_Etc_GMTm5,
TZN_Etc_GMTm6,
TZN_Etc_GMTm7,
TZN_Etc_GMTm8,
TZN_Etc_GMTm9,
TZN_Etc_GMTm10,
TZN_Etc_GMTm11,
TZN_Etc_GMTm12,
TZN_Etc_GMTm13,
TZN_Etc_GMTm14,
TZN_Etc_GMT0,
TZN_Etc_GMTp0,
TZN_Etc_GMTp1,
TZN_Etc_GMTp2,
TZN_Etc_GMTp3,
TZN_Etc_GMTp4,
TZN_Etc_GMTp5,
TZN_Etc_GMTp6,
TZN_Etc_GMTp7,
TZN_Etc_GMTp8,
TZN_Etc_GMTp9,
TZN_Etc_GMTp10,
TZN_Etc_GMTp11,
TZN_Etc_GMTp12,
TZN_Etc_UCT,
TZN_Etc_UTC,
TZN_Etc_Greenwich,
TZN_Etc_Universal,
TZN_Etc_Zulu
};


const char TZ_Africa_Abidjan[] PROGMEM = "GMT0";
const char TZ_Africa_Accra[] PROGMEM = "GMT0";
const char TZ_Africa_Addis_Ababa[] PROGMEM = "EAT-3";
const char TZ_Africa_Algiers[] PROGMEM = "CET-1";
const char TZ_Africa_Asmara[] PROGMEM = "EAT-3";
const char TZ_Africa_Bamako[] PROGMEM = "GMT0";
const char TZ_Africa_Bangui[] PROGMEM = "WAT-1";
const char TZ_Africa_Banjul[] PROGMEM = "GMT0";
const char TZ_Africa_Bissau[] PROGMEM = "GMT0";
const char TZ_Africa_Blantyre[] PROGMEM = "CAT-2";
const char TZ_Africa_Brazzaville[] PROGMEM = "WAT-1";
const char TZ_Africa_Bujumbura[] PROGMEM = "CAT-2";
const char TZ_Africa_Cairo[] PROGMEM = "EET-2";
const char TZ_Africa_Casablanca[] PROGMEM = "<+01>-1";
const char TZ_Africa_Ceuta[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Africa_Conakry[] PROGMEM = "GMT0";
const char TZ_Africa_Dakar[] PROGMEM = "GMT0";
const char TZ_Africa_Dar_es_Salaam[] PROGMEM = "EAT-3";
const char TZ_Africa_Djibouti[] PROGMEM = "EAT-3";
const char TZ_Africa_Douala[] PROGMEM = "WAT-1";
const char TZ_Africa_El_Aaiun[] PROGMEM = "<+01>-1";
const char TZ_Africa_Freetown[] PROGMEM = "GMT0";
const char TZ_Africa_Gaborone[] PROGMEM = "CAT-2";
const char TZ_Africa_Harare[] PROGMEM = "CAT-2";
const char TZ_Africa_Johannesburg[] PROGMEM = "SAST-2";
const char TZ_Africa_Juba[] PROGMEM = "EAT-3";
const char TZ_Africa_Kampala[] PROGMEM = "EAT-3";
const char TZ_Africa_Khartoum[] PROGMEM = "CAT-2";
const char TZ_Africa_Kigali[] PROGMEM = "CAT-2";
const char TZ_Africa_Kinshasa[] PROGMEM = "WAT-1";
const char TZ_Africa_Lagos[] PROGMEM = "WAT-1";
const char TZ_Africa_Libreville[] PROGMEM = "WAT-1";
const char TZ_Africa_Lome[] PROGMEM = "GMT0";
const char TZ_Africa_Luanda[] PROGMEM = "WAT-1";
const char TZ_Africa_Lubumbashi[] PROGMEM = "CAT-2";
const char TZ_Africa_Lusaka[] PROGMEM = "CAT-2";
const char TZ_Africa_Malabo[] PROGMEM = "WAT-1";
const char TZ_Africa_Maputo[] PROGMEM = "CAT-2";
const char TZ_Africa_Maseru[] PROGMEM = "SAST-2";
const char TZ_Africa_Mbabane[] PROGMEM = "SAST-2";
const char TZ_Africa_Mogadishu[] PROGMEM = "EAT-3";
const char TZ_Africa_Monrovia[] PROGMEM = "GMT0";
const char TZ_Africa_Nairobi[] PROGMEM = "EAT-3";
const char TZ_Africa_Ndjamena[] PROGMEM = "WAT-1";
const char TZ_Africa_Niamey[] PROGMEM = "WAT-1";
const char TZ_Africa_Nouakchott[] PROGMEM = "GMT0";
const char TZ_Africa_Ouagadougou[] PROGMEM = "GMT0";
const char TZ_Africa_PortomNovo[] PROGMEM = "WAT-1";
const char TZ_Africa_Sao_Tome[] PROGMEM = "GMT0";
const char TZ_Africa_Tripoli[] PROGMEM = "EET-2";
const char TZ_Africa_Tunis[] PROGMEM = "CET-1";
const char TZ_Africa_Windhoek[] PROGMEM = "CAT-2";
const char TZ_America_Adak[] PROGMEM = "HST10HDT,M3.2.0,M11.1.0";
const char TZ_America_Anchorage[] PROGMEM = "AKST9AKDT,M3.2.0,M11.1.0";
const char TZ_America_Anguilla[] PROGMEM = "AST4";
const char TZ_America_Antigua[] PROGMEM = "AST4";
const char TZ_America_Araguaina[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Buenos_Aires[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Catamarca[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Cordoba[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Jujuy[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_La_Rioja[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Mendoza[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Rio_Gallegos[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Salta[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_San_Juan[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_San_Luis[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Tucuman[] PROGMEM = "<-03>3";
const char TZ_America_Argentina_Ushuaia[] PROGMEM = "<-03>3";
const char TZ_America_Aruba[] PROGMEM = "AST4";
const char TZ_America_Asuncion[] PROGMEM = "<-04>4<-03>,M10.1.0/0,M3.4.0/0";
const char TZ_America_Atikokan[] PROGMEM = "EST5";
const char TZ_America_Bahia[] PROGMEM = "<-03>3";
const char TZ_America_Bahia_Banderas[] PROGMEM = "CST6CDT,M4.1.0,M10.5.0";
const char TZ_America_Barbados[] PROGMEM = "AST4";
const char TZ_America_Belem[] PROGMEM = "<-03>3";
const char TZ_America_Belize[] PROGMEM = "CST6";
const char TZ_America_BlancmSablon[] PROGMEM = "AST4";
const char TZ_America_Boa_Vista[] PROGMEM = "<-04>4";
const char TZ_America_Bogota[] PROGMEM = "<-05>5";
const char TZ_America_Boise[] PROGMEM = "MST7MDT,M3.2.0,M11.1.0";
const char TZ_America_Cambridge_Bay[] PROGMEM = "MST7MDT,M3.2.0,M11.1.0";
const char TZ_America_Campo_Grande[] PROGMEM = "<-04>4";
const char TZ_America_Cancun[] PROGMEM = "EST5";
const char TZ_America_Caracas[] PROGMEM = "<-04>4";
const char TZ_America_Cayenne[] PROGMEM = "<-03>3";
const char TZ_America_Cayman[] PROGMEM = "EST5";
const char TZ_America_Chicago[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Chihuahua[] PROGMEM = "MST7MDT,M4.1.0,M10.5.0";
const char TZ_America_Costa_Rica[] PROGMEM = "CST6";
const char TZ_America_Creston[] PROGMEM = "MST7";
const char TZ_America_Cuiaba[] PROGMEM = "<-04>4";
const char TZ_America_Curacao[] PROGMEM = "AST4";
const char TZ_America_Danmarkshavn[] PROGMEM = "GMT0";
const char TZ_America_Dawson[] PROGMEM = "MST7";
const char TZ_America_Dawson_Creek[] PROGMEM = "MST7";
const char TZ_America_Denver[] PROGMEM = "MST7MDT,M3.2.0,M11.1.0";
const char TZ_America_Detroit[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Dominica[] PROGMEM = "AST4";
const char TZ_America_Edmonton[] PROGMEM = "MST7MDT,M3.2.0,M11.1.0";
const char TZ_America_Eirunepe[] PROGMEM = "<-05>5";
const char TZ_America_El_Salvador[] PROGMEM = "CST6";
const char TZ_America_Fortaleza[] PROGMEM = "<-03>3";
const char TZ_America_Fort_Nelson[] PROGMEM = "MST7";
const char TZ_America_Glace_Bay[] PROGMEM = "AST4ADT,M3.2.0,M11.1.0";
const char TZ_America_Godthab[] PROGMEM = "<-03>3<-02>,M3.5.0/-2,M10.5.0/-1";
const char TZ_America_Goose_Bay[] PROGMEM = "AST4ADT,M3.2.0,M11.1.0";
const char TZ_America_Grand_Turk[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Grenada[] PROGMEM = "AST4";
const char TZ_America_Guadeloupe[] PROGMEM = "AST4";
const char TZ_America_Guatemala[] PROGMEM = "CST6";
const char TZ_America_Guayaquil[] PROGMEM = "<-05>5";
const char TZ_America_Guyana[] PROGMEM = "<-04>4";
const char TZ_America_Halifax[] PROGMEM = "AST4ADT,M3.2.0,M11.1.0";
const char TZ_America_Havana[] PROGMEM = "CST5CDT,M3.2.0/0,M11.1.0/1";
const char TZ_America_Hermosillo[] PROGMEM = "MST7";
const char TZ_America_Indiana_Indianapolis[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Indiana_Knox[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Indiana_Marengo[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Indiana_Petersburg[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Indiana_Tell_City[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Indiana_Vevay[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Indiana_Vincennes[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Indiana_Winamac[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Inuvik[] PROGMEM = "MST7MDT,M3.2.0,M11.1.0";
const char TZ_America_Iqaluit[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Jamaica[] PROGMEM = "EST5";
const char TZ_America_Juneau[] PROGMEM = "AKST9AKDT,M3.2.0,M11.1.0";
const char TZ_America_Kentucky_Louisville[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Kentucky_Monticello[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Kralendijk[] PROGMEM = "AST4";
const char TZ_America_La_Paz[] PROGMEM = "<-04>4";
const char TZ_America_Lima[] PROGMEM = "<-05>5";
const char TZ_America_Los_Angeles[] PROGMEM = "PST8PDT,M3.2.0,M11.1.0";
const char TZ_America_Lower_Princes[] PROGMEM = "AST4";
const char TZ_America_Maceio[] PROGMEM = "<-03>3";
const char TZ_America_Managua[] PROGMEM = "CST6";
const char TZ_America_Manaus[] PROGMEM = "<-04>4";
const char TZ_America_Marigot[] PROGMEM = "AST4";
const char TZ_America_Martinique[] PROGMEM = "AST4";
const char TZ_America_Matamoros[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Mazatlan[] PROGMEM = "MST7MDT,M4.1.0,M10.5.0";
const char TZ_America_Menominee[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Merida[] PROGMEM = "CST6CDT,M4.1.0,M10.5.0";
const char TZ_America_Metlakatla[] PROGMEM = "AKST9AKDT,M3.2.0,M11.1.0";
const char TZ_America_Mexico_City[] PROGMEM = "CST6CDT,M4.1.0,M10.5.0";
const char TZ_America_Miquelon[] PROGMEM = "<-03>3<-02>,M3.2.0,M11.1.0";
const char TZ_America_Moncton[] PROGMEM = "AST4ADT,M3.2.0,M11.1.0";
const char TZ_America_Monterrey[] PROGMEM = "CST6CDT,M4.1.0,M10.5.0";
const char TZ_America_Montevideo[] PROGMEM = "<-03>3";
const char TZ_America_Montreal[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Montserrat[] PROGMEM = "AST4";
const char TZ_America_Nassau[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_New_York[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Nipigon[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Nome[] PROGMEM = "AKST9AKDT,M3.2.0,M11.1.0";
const char TZ_America_Noronha[] PROGMEM = "<-02>2";
const char TZ_America_North_Dakota_Beulah[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_North_Dakota_Center[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_North_Dakota_New_Salem[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Nuuk[] PROGMEM = "<-03>3<-02>,M3.5.0/-2,M10.5.0/-1";
const char TZ_America_Ojinaga[] PROGMEM = "MST7MDT,M3.2.0,M11.1.0";
const char TZ_America_Panama[] PROGMEM = "EST5";
const char TZ_America_Pangnirtung[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Paramaribo[] PROGMEM = "<-03>3";
const char TZ_America_Phoenix[] PROGMEM = "MST7";
const char TZ_America_PortmaumPrince[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Port_of_Spain[] PROGMEM = "AST4";
const char TZ_America_Porto_Velho[] PROGMEM = "<-04>4";
const char TZ_America_Puerto_Rico[] PROGMEM = "AST4";
const char TZ_America_Punta_Arenas[] PROGMEM = "<-03>3";
const char TZ_America_Rainy_River[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Rankin_Inlet[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Recife[] PROGMEM = "<-03>3";
const char TZ_America_Regina[] PROGMEM = "CST6";
const char TZ_America_Resolute[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Rio_Branco[] PROGMEM = "<-05>5";
const char TZ_America_Santarem[] PROGMEM = "<-03>3";
const char TZ_America_Santiago[] PROGMEM = "<-04>4<-03>,M9.1.6/24,M4.1.6/24";
const char TZ_America_Santo_Domingo[] PROGMEM = "AST4";
const char TZ_America_Sao_Paulo[] PROGMEM = "<-03>3";
const char TZ_America_Scoresbysund[] PROGMEM = "<-01>1<+00>,M3.5.0/0,M10.5.0/1";
const char TZ_America_Sitka[] PROGMEM = "AKST9AKDT,M3.2.0,M11.1.0";
const char TZ_America_St_Barthelemy[] PROGMEM = "AST4";
const char TZ_America_St_Johns[] PROGMEM = "NST3:30NDT,M3.2.0,M11.1.0";
const char TZ_America_St_Kitts[] PROGMEM = "AST4";
const char TZ_America_St_Lucia[] PROGMEM = "AST4";
const char TZ_America_St_Thomas[] PROGMEM = "AST4";
const char TZ_America_St_Vincent[] PROGMEM = "AST4";
const char TZ_America_Swift_Current[] PROGMEM = "CST6";
const char TZ_America_Tegucigalpa[] PROGMEM = "CST6";
const char TZ_America_Thule[] PROGMEM = "AST4ADT,M3.2.0,M11.1.0";
const char TZ_America_Thunder_Bay[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Tijuana[] PROGMEM = "PST8PDT,M3.2.0,M11.1.0";
const char TZ_America_Toronto[] PROGMEM = "EST5EDT,M3.2.0,M11.1.0";
const char TZ_America_Tortola[] PROGMEM = "AST4";
const char TZ_America_Vancouver[] PROGMEM = "PST8PDT,M3.2.0,M11.1.0";
const char TZ_America_Whitehorse[] PROGMEM = "MST7";
const char TZ_America_Winnipeg[] PROGMEM = "CST6CDT,M3.2.0,M11.1.0";
const char TZ_America_Yakutat[] PROGMEM = "AKST9AKDT,M3.2.0,M11.1.0";
const char TZ_America_Yellowknife[] PROGMEM = "MST7MDT,M3.2.0,M11.1.0";
const char TZ_Antarctica_Casey[] PROGMEM = "<+11>-11";
const char TZ_Antarctica_Davis[] PROGMEM = "<+07>-7";
const char TZ_Antarctica_DumontDUrville[] PROGMEM = "<+10>-10";
const char TZ_Antarctica_Macquarie[] PROGMEM = "AEST-10AEDT,M10.1.0,M4.1.0/3";
const char TZ_Antarctica_Mawson[] PROGMEM = "<+05>-5";
const char TZ_Antarctica_McMurdo[] PROGMEM = "NZST-12NZDT,M9.5.0,M4.1.0/3";
const char TZ_Antarctica_Palmer[] PROGMEM = "<-03>3";
const char TZ_Antarctica_Rothera[] PROGMEM = "<-03>3";
const char TZ_Antarctica_Syowa[] PROGMEM = "<+03>-3";
const char TZ_Antarctica_Troll[] PROGMEM = "<+00>0<+02>-2,M3.5.0/1,M10.5.0/3";
const char TZ_Antarctica_Vostok[] PROGMEM = "<+06>-6";
const char TZ_Arctic_Longyearbyen[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Asia_Aden[] PROGMEM = "<+03>-3";
const char TZ_Asia_Almaty[] PROGMEM = "<+06>-6";
const char TZ_Asia_Amman[] PROGMEM = "EET-2EEST,M3.5.4/24,M10.5.5/1";
const char TZ_Asia_Anadyr[] PROGMEM = "<+12>-12";
const char TZ_Asia_Aqtau[] PROGMEM = "<+05>-5";
const char TZ_Asia_Aqtobe[] PROGMEM = "<+05>-5";
const char TZ_Asia_Ashgabat[] PROGMEM = "<+05>-5";
const char TZ_Asia_Atyrau[] PROGMEM = "<+05>-5";
const char TZ_Asia_Baghdad[] PROGMEM = "<+03>-3";
const char TZ_Asia_Bahrain[] PROGMEM = "<+03>-3";
const char TZ_Asia_Baku[] PROGMEM = "<+04>-4";
const char TZ_Asia_Bangkok[] PROGMEM = "<+07>-7";
const char TZ_Asia_Barnaul[] PROGMEM = "<+07>-7";
const char TZ_Asia_Beirut[] PROGMEM = "EET-2EEST,M3.5.0/0,M10.5.0/0";
const char TZ_Asia_Bishkek[] PROGMEM = "<+06>-6";
const char TZ_Asia_Brunei[] PROGMEM = "<+08>-8";
const char TZ_Asia_Chita[] PROGMEM = "<+09>-9";
const char TZ_Asia_Choibalsan[] PROGMEM = "<+08>-8";
const char TZ_Asia_Colombo[] PROGMEM = "<+0530>-5:30";
const char TZ_Asia_Damascus[] PROGMEM = "EET-2EEST,M3.5.5/0,M10.5.5/0";
const char TZ_Asia_Dhaka[] PROGMEM = "<+06>-6";
const char TZ_Asia_Dili[] PROGMEM = "<+09>-9";
const char TZ_Asia_Dubai[] PROGMEM = "<+04>-4";
const char TZ_Asia_Dushanbe[] PROGMEM = "<+05>-5";
const char TZ_Asia_Famagusta[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Asia_Gaza[] PROGMEM = "EET-2EEST,M3.4.4/48,M10.4.4/49";
const char TZ_Asia_Hebron[] PROGMEM = "EET-2EEST,M3.4.4/48,M10.4.4/49";
const char TZ_Asia_Ho_Chi_Minh[] PROGMEM = "<+07>-7";
const char TZ_Asia_Hong_Kong[] PROGMEM = "HKT-8";
const char TZ_Asia_Hovd[] PROGMEM = "<+07>-7";
const char TZ_Asia_Irkutsk[] PROGMEM = "<+08>-8";
const char TZ_Asia_Jakarta[] PROGMEM = "WIB-7";
const char TZ_Asia_Jayapura[] PROGMEM = "WIT-9";
const char TZ_Asia_Jerusalem[] PROGMEM = "IST-2IDT,M3.4.4/26,M10.5.0";
const char TZ_Asia_Kabul[] PROGMEM = "<+0430>-4:30";
const char TZ_Asia_Kamchatka[] PROGMEM = "<+12>-12";
const char TZ_Asia_Karachi[] PROGMEM = "PKT-5";
const char TZ_Asia_Kathmandu[] PROGMEM = "<+0545>-5:45";
const char TZ_Asia_Khandyga[] PROGMEM = "<+09>-9";
const char TZ_Asia_Kolkata[] PROGMEM = "IST-5:30";
const char TZ_Asia_Krasnoyarsk[] PROGMEM = "<+07>-7";
const char TZ_Asia_Kuala_Lumpur[] PROGMEM = "<+08>-8";
const char TZ_Asia_Kuching[] PROGMEM = "<+08>-8";
const char TZ_Asia_Kuwait[] PROGMEM = "<+03>-3";
const char TZ_Asia_Macau[] PROGMEM = "CST-8";
const char TZ_Asia_Magadan[] PROGMEM = "<+11>-11";
const char TZ_Asia_Makassar[] PROGMEM = "WITA-8";
const char TZ_Asia_Manila[] PROGMEM = "PST-8";
const char TZ_Asia_Muscat[] PROGMEM = "<+04>-4";
const char TZ_Asia_Nicosia[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Asia_Novokuznetsk[] PROGMEM = "<+07>-7";
const char TZ_Asia_Novosibirsk[] PROGMEM = "<+07>-7";
const char TZ_Asia_Omsk[] PROGMEM = "<+06>-6";
const char TZ_Asia_Oral[] PROGMEM = "<+05>-5";
const char TZ_Asia_Phnom_Penh[] PROGMEM = "<+07>-7";
const char TZ_Asia_Pontianak[] PROGMEM = "WIB-7";
const char TZ_Asia_Pyongyang[] PROGMEM = "KST-9";
const char TZ_Asia_Qatar[] PROGMEM = "<+03>-3";
const char TZ_Asia_Qyzylorda[] PROGMEM = "<+05>-5";
const char TZ_Asia_Riyadh[] PROGMEM = "<+03>-3";
const char TZ_Asia_Sakhalin[] PROGMEM = "<+11>-11";
const char TZ_Asia_Samarkand[] PROGMEM = "<+05>-5";
const char TZ_Asia_Seoul[] PROGMEM = "KST-9";
const char TZ_Asia_Shanghai[] PROGMEM = "CST-8";
const char TZ_Asia_Singapore[] PROGMEM = "<+08>-8";
const char TZ_Asia_Srednekolymsk[] PROGMEM = "<+11>-11";
const char TZ_Asia_Taipei[] PROGMEM = "CST-8";
const char TZ_Asia_Tashkent[] PROGMEM = "<+05>-5";
const char TZ_Asia_Tbilisi[] PROGMEM = "<+04>-4";
const char TZ_Asia_Tehran[] PROGMEM = "<+0330>-3:30<+0430>,J79/24,J263/24";
const char TZ_Asia_Thimphu[] PROGMEM = "<+06>-6";
const char TZ_Asia_Tokyo[] PROGMEM = "JST-9";
const char TZ_Asia_Tomsk[] PROGMEM = "<+07>-7";
const char TZ_Asia_Ulaanbaatar[] PROGMEM = "<+08>-8";
const char TZ_Asia_Urumqi[] PROGMEM = "<+06>-6";
const char TZ_Asia_UstmNera[] PROGMEM = "<+10>-10";
const char TZ_Asia_Vientiane[] PROGMEM = "<+07>-7";
const char TZ_Asia_Vladivostok[] PROGMEM = "<+10>-10";
const char TZ_Asia_Yakutsk[] PROGMEM = "<+09>-9";
const char TZ_Asia_Yangon[] PROGMEM = "<+0630>-6:30";
const char TZ_Asia_Yekaterinburg[] PROGMEM = "<+05>-5";
const char TZ_Asia_Yerevan[] PROGMEM = "<+04>-4";
const char TZ_Atlantic_Azores[] PROGMEM = "<-01>1<+00>,M3.5.0/0,M10.5.0/1";
const char TZ_Atlantic_Bermuda[] PROGMEM = "AST4ADT,M3.2.0,M11.1.0";
const char TZ_Atlantic_Canary[] PROGMEM = "WET0WEST,M3.5.0/1,M10.5.0";
const char TZ_Atlantic_Cape_Verde[] PROGMEM = "<-01>1";
const char TZ_Atlantic_Faroe[] PROGMEM = "WET0WEST,M3.5.0/1,M10.5.0";
const char TZ_Atlantic_Madeira[] PROGMEM = "WET0WEST,M3.5.0/1,M10.5.0";
const char TZ_Atlantic_Reykjavik[] PROGMEM = "GMT0";
const char TZ_Atlantic_South_Georgia[] PROGMEM = "<-02>2";
const char TZ_Atlantic_Stanley[] PROGMEM = "<-03>3";
const char TZ_Atlantic_St_Helena[] PROGMEM = "GMT0";
const char TZ_Australia_Adelaide[] PROGMEM = "ACST-9:30ACDT,M10.1.0,M4.1.0/3";
const char TZ_Australia_Brisbane[] PROGMEM = "AEST-10";
const char TZ_Australia_Broken_Hill[] PROGMEM = "ACST-9:30ACDT,M10.1.0,M4.1.0/3";
const char TZ_Australia_Currie[] PROGMEM = "AEST-10AEDT,M10.1.0,M4.1.0/3";
const char TZ_Australia_Darwin[] PROGMEM = "ACST-9:30";
const char TZ_Australia_Eucla[] PROGMEM = "<+0845>-8:45";
const char TZ_Australia_Hobart[] PROGMEM = "AEST-10AEDT,M10.1.0,M4.1.0/3";
const char TZ_Australia_Lindeman[] PROGMEM = "AEST-10";
const char TZ_Australia_Lord_Howe[] PROGMEM = "<+1030>-10:30<+11>-11,M10.1.0,M4.1.0";
const char TZ_Australia_Melbourne[] PROGMEM = "AEST-10AEDT,M10.1.0,M4.1.0/3";
const char TZ_Australia_Perth[] PROGMEM = "AWST-8";
const char TZ_Australia_Sydney[] PROGMEM = "AEST-10AEDT,M10.1.0,M4.1.0/3";
const char TZ_Europe_Amsterdam[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Andorra[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Astrakhan[] PROGMEM = "<+04>-4";
const char TZ_Europe_Athens[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Belgrade[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Berlin[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Bratislava[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Brussels[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Bucharest[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Budapest[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Busingen[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Chisinau[] PROGMEM = "EET-2EEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Copenhagen[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Dublin[] PROGMEM = "IST-1GMT0,M10.5.0,M3.5.0/1";
const char TZ_Europe_Gibraltar[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Guernsey[] PROGMEM = "GMT0BST,M3.5.0/1,M10.5.0";
const char TZ_Europe_Helsinki[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Isle_of_Man[] PROGMEM = "GMT0BST,M3.5.0/1,M10.5.0";
const char TZ_Europe_Istanbul[] PROGMEM = "<+03>-3";
const char TZ_Europe_Jersey[] PROGMEM = "GMT0BST,M3.5.0/1,M10.5.0";
const char TZ_Europe_Kaliningrad[] PROGMEM = "EET-2";
const char TZ_Europe_Kiev[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Kirov[] PROGMEM = "<+03>-3";
const char TZ_Europe_Lisbon[] PROGMEM = "WET0WEST,M3.5.0/1,M10.5.0";
const char TZ_Europe_Ljubljana[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_London[] PROGMEM = "GMT0BST,M3.5.0/1,M10.5.0";
const char TZ_Europe_Luxembourg[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Madrid[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Malta[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Mariehamn[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Minsk[] PROGMEM = "<+03>-3";
const char TZ_Europe_Monaco[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Moscow[] PROGMEM = "MSK-3";
const char TZ_Europe_Oslo[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Paris[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Podgorica[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Prague[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Riga[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Rome[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Samara[] PROGMEM = "<+04>-4";
const char TZ_Europe_San_Marino[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Sarajevo[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Saratov[] PROGMEM = "<+04>-4";
const char TZ_Europe_Simferopol[] PROGMEM = "MSK-3";
const char TZ_Europe_Skopje[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Sofia[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Stockholm[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Tallinn[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Tirane[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Ulyanovsk[] PROGMEM = "<+04>-4";
const char TZ_Europe_Uzhgorod[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Vaduz[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Vatican[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Vienna[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Vilnius[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Volgograd[] PROGMEM = "<+03>-3";
const char TZ_Europe_Warsaw[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Zagreb[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Europe_Zaporozhye[] PROGMEM = "EET-2EEST,M3.5.0/3,M10.5.0/4";
const char TZ_Europe_Zurich[] PROGMEM = "CET-1CEST,M3.5.0,M10.5.0/3";
const char TZ_Indian_Antananarivo[] PROGMEM = "EAT-3";
const char TZ_Indian_Chagos[] PROGMEM = "<+06>-6";
const char TZ_Indian_Christmas[] PROGMEM = "<+07>-7";
const char TZ_Indian_Cocos[] PROGMEM = "<+0630>-6:30";
const char TZ_Indian_Comoro[] PROGMEM = "EAT-3";
const char TZ_Indian_Kerguelen[] PROGMEM = "<+05>-5";
const char TZ_Indian_Mahe[] PROGMEM = "<+04>-4";
const char TZ_Indian_Maldives[] PROGMEM = "<+05>-5";
const char TZ_Indian_Mauritius[] PROGMEM = "<+04>-4";
const char TZ_Indian_Mayotte[] PROGMEM = "EAT-3";
const char TZ_Indian_Reunion[] PROGMEM = "<+04>-4";
const char TZ_Pacific_Apia[] PROGMEM = "<+13>-13<+14>,M9.5.0/3,M4.1.0/4";
const char TZ_Pacific_Auckland[] PROGMEM = "NZST-12NZDT,M9.5.0,M4.1.0/3";
const char TZ_Pacific_Bougainville[] PROGMEM = "<+11>-11";
const char TZ_Pacific_Chatham[] PROGMEM = "<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45";
const char TZ_Pacific_Chuuk[] PROGMEM = "<+10>-10";
const char TZ_Pacific_Easter[] PROGMEM = "<-06>6<-05>,M9.1.6/22,M4.1.6/22";
const char TZ_Pacific_Efate[] PROGMEM = "<+11>-11";
const char TZ_Pacific_Enderbury[] PROGMEM = "<+13>-13";
const char TZ_Pacific_Fakaofo[] PROGMEM = "<+13>-13";
const char TZ_Pacific_Fiji[] PROGMEM = "<+12>-12<+13>,M11.2.0,M1.2.3/99";
const char TZ_Pacific_Funafuti[] PROGMEM = "<+12>-12";
const char TZ_Pacific_Galapagos[] PROGMEM = "<-06>6";
const char TZ_Pacific_Gambier[] PROGMEM = "<-09>9";
const char TZ_Pacific_Guadalcanal[] PROGMEM = "<+11>-11";
const char TZ_Pacific_Guam[] PROGMEM = "ChST-10";
const char TZ_Pacific_Honolulu[] PROGMEM = "HST10";
const char TZ_Pacific_Kiritimati[] PROGMEM = "<+14>-14";
const char TZ_Pacific_Kosrae[] PROGMEM = "<+11>-11";
const char TZ_Pacific_Kwajalein[] PROGMEM = "<+12>-12";
const char TZ_Pacific_Majuro[] PROGMEM = "<+12>-12";
const char TZ_Pacific_Marquesas[] PROGMEM = "<-0930>9:30";
const char TZ_Pacific_Midway[] PROGMEM = "SST11";
const char TZ_Pacific_Nauru[] PROGMEM = "<+12>-12";
const char TZ_Pacific_Niue[] PROGMEM = "<-11>11";
const char TZ_Pacific_Norfolk[] PROGMEM = "<+11>-11<+12>,M10.1.0,M4.1.0/3";
const char TZ_Pacific_Noumea[] PROGMEM = "<+11>-11";
const char TZ_Pacific_Pago_Pago[] PROGMEM = "SST11";
const char TZ_Pacific_Palau[] PROGMEM = "<+09>-9";
const char TZ_Pacific_Pitcairn[] PROGMEM = "<-08>8";
const char TZ_Pacific_Pohnpei[] PROGMEM = "<+11>-11";
const char TZ_Pacific_Port_Moresby[] PROGMEM = "<+10>-10";
const char TZ_Pacific_Rarotonga[] PROGMEM = "<-10>10";
const char TZ_Pacific_Saipan[] PROGMEM = "ChST-10";
const char TZ_Pacific_Tahiti[] PROGMEM = "<-10>10";
const char TZ_Pacific_Tarawa[] PROGMEM = "<+12>-12";
const char TZ_Pacific_Tongatapu[] PROGMEM = "<+13>-13";
const char TZ_Pacific_Wake[] PROGMEM = "<+12>-12";
const char TZ_Pacific_Wallis[] PROGMEM = "<+12>-12";
const char TZ_Etc_GMT[] PROGMEM = "GMT0";
const char TZ_Etc_GMTm0[] PROGMEM = "GMT0";
const char TZ_Etc_GMTm1[] PROGMEM = "<+01>-1";
const char TZ_Etc_GMTm2[] PROGMEM = "<+02>-2";
const char TZ_Etc_GMTm3[] PROGMEM = "<+03>-3";
const char TZ_Etc_GMTm4[] PROGMEM = "<+04>-4";
const char TZ_Etc_GMTm5[] PROGMEM = "<+05>-5";
const char TZ_Etc_GMTm6[] PROGMEM = "<+06>-6";
const char TZ_Etc_GMTm7[] PROGMEM = "<+07>-7";
const char TZ_Etc_GMTm8[] PROGMEM = "<+08>-8";
const char TZ_Etc_GMTm9[] PROGMEM = "<+09>-9";
const char TZ_Etc_GMTm10[] PROGMEM = "<+10>-10";
const char TZ_Etc_GMTm11[] PROGMEM = "<+11>-11";
const char TZ_Etc_GMTm12[] PROGMEM = "<+12>-12";
const char TZ_Etc_GMTm13[] PROGMEM = "<+13>-13";
const char TZ_Etc_GMTm14[] PROGMEM = "<+14>-14";
const char TZ_Etc_GMT0[] PROGMEM = "GMT0";
const char TZ_Etc_GMTp0[] PROGMEM = "GMT0";
const char TZ_Etc_GMTp1[] PROGMEM = "<-01>1";
const char TZ_Etc_GMTp2[] PROGMEM = "<-02>2";
const char TZ_Etc_GMTp3[] PROGMEM = "<-03>3";
const char TZ_Etc_GMTp4[] PROGMEM = "<-04>4";
const char TZ_Etc_GMTp5[] PROGMEM = "<-05>5";
const char TZ_Etc_GMTp6[] PROGMEM = "<-06>6";
const char TZ_Etc_GMTp7[] PROGMEM = "<-07>7";
const char TZ_Etc_GMTp8[] PROGMEM = "<-08>8";
const char TZ_Etc_GMTp9[] PROGMEM = "<-09>9";
const char TZ_Etc_GMTp10[] PROGMEM = "<-10>10";
const char TZ_Etc_GMTp11[] PROGMEM = "<-11>11";
const char TZ_Etc_GMTp12[] PROGMEM = "<-12>12";
const char TZ_Etc_UCT[] PROGMEM = "UTC0";
const char TZ_Etc_UTC[] PROGMEM = "UTC0";
const char TZ_Etc_Greenwich[] PROGMEM = "GMT0";
const char TZ_Etc_Universal[] PROGMEM = "UTC0";
const char TZ_Etc_Zulu[] PROGMEM = "UTC0";



PGM_P const TZones[] PROGMEM = 
{
TZ_Africa_Abidjan,
TZ_Africa_Accra,
TZ_Africa_Addis_Ababa,
TZ_Africa_Algiers,
TZ_Africa_Asmara,
TZ_Africa_Bamako,
TZ_Africa_Bangui,
TZ_Africa_Banjul,
TZ_Africa_Bissau,
TZ_Africa_Blantyre,
TZ_Africa_Brazzaville,
TZ_Africa_Bujumbura,
TZ_Africa_Cairo,
TZ_Africa_Casablanca,
TZ_Africa_Ceuta,
TZ_Africa_Conakry,
TZ_Africa_Dakar,
TZ_Africa_Dar_es_Salaam,
TZ_Africa_Djibouti,
TZ_Africa_Douala,
TZ_Africa_El_Aaiun,
TZ_Africa_Freetown,
TZ_Africa_Gaborone,
TZ_Africa_Harare,
TZ_Africa_Johannesburg,
TZ_Africa_Juba,
TZ_Africa_Kampala,
TZ_Africa_Khartoum,
TZ_Africa_Kigali,
TZ_Africa_Kinshasa,
TZ_Africa_Lagos,
TZ_Africa_Libreville,
TZ_Africa_Lome,
TZ_Africa_Luanda,
TZ_Africa_Lubumbashi,
TZ_Africa_Lusaka,
TZ_Africa_Malabo,
TZ_Africa_Maputo,
TZ_Africa_Maseru,
TZ_Africa_Mbabane,
TZ_Africa_Mogadishu,
TZ_Africa_Monrovia,
TZ_Africa_Nairobi,
TZ_Africa_Ndjamena,
TZ_Africa_Niamey,
TZ_Africa_Nouakchott,
TZ_Africa_Ouagadougou,
TZ_Africa_PortomNovo,
TZ_Africa_Sao_Tome,
TZ_Africa_Tripoli,
TZ_Africa_Tunis,
TZ_Africa_Windhoek,
TZ_America_Adak,
TZ_America_Anchorage,
TZ_America_Anguilla,
TZ_America_Antigua,
TZ_America_Araguaina,
TZ_America_Argentina_Buenos_Aires,
TZ_America_Argentina_Catamarca,
TZ_America_Argentina_Cordoba,
TZ_America_Argentina_Jujuy,
TZ_America_Argentina_La_Rioja,
TZ_America_Argentina_Mendoza,
TZ_America_Argentina_Rio_Gallegos,
TZ_America_Argentina_Salta,
TZ_America_Argentina_San_Juan,
TZ_America_Argentina_San_Luis,
TZ_America_Argentina_Tucuman,
TZ_America_Argentina_Ushuaia,
...

This file has been truncated, please download it to see its full contents.

TZRef

C Header File
/*
0   TZ_Africa_Abidjan,
1   TZ_Africa_Accra,
2   TZ_Africa_Addis_Ababa,
3   TZ_Africa_Algiers,
4   TZ_Africa_Asmara,
5   TZ_Africa_Bamako,
6   TZ_Africa_Bangui,
7   TZ_Africa_Banjul,
8   TZ_Africa_Bissau,
9   TZ_Africa_Blantyre,
10  TZ_Africa_Brazzaville,
11  TZ_Africa_Bujumbura,
12  TZ_Africa_Cairo,
13  TZ_Africa_Casablanca,
14  TZ_Africa_Ceuta,
15  TZ_Africa_Conakry,
16  TZ_Africa_Dakar,
17  TZ_Africa_Dar_es_Salaam,
18  TZ_Africa_Djibouti,
19  TZ_Africa_Douala,
20  TZ_Africa_El_Aaiun,
21  TZ_Africa_Freetown,
22  TZ_Africa_Gaborone,
23  TZ_Africa_Harare,
24  TZ_Africa_Johannesburg,
25  TZ_Africa_Juba,
26  TZ_Africa_Kampala,
27  TZ_Africa_Khartoum,
28  TZ_Africa_Kigali,
29  TZ_Africa_Kinshasa,
30  TZ_Africa_Lagos,
31  TZ_Africa_Libreville,
32  TZ_Africa_Lome,
33  TZ_Africa_Luanda,
34  TZ_Africa_Lubumbashi,
35  TZ_Africa_Lusaka,
36  TZ_Africa_Malabo,
37  TZ_Africa_Maputo,
38  TZ_Africa_Maseru,
39  TZ_Africa_Mbabane,
40  TZ_Africa_Mogadishu,
41  TZ_Africa_Monrovia,
42  TZ_Africa_Nairobi,
43  TZ_Africa_Ndjamena,
44  TZ_Africa_Niamey,
45  TZ_Africa_Nouakchott,
46  TZ_Africa_Ouagadougou,
47  TZ_Africa_PortomNovo,
48  TZ_Africa_Sao_Tome,
49  TZ_Africa_Tripoli,
50  TZ_Africa_Tunis,
51  TZ_Africa_Windhoek,
52  TZ_America_Adak,
53  TZ_America_Anchorage,
54  TZ_America_Anguilla,
55  TZ_America_Antigua,
56  TZ_America_Araguaina,
57  TZ_America_Argentina_Buenos_Aires,
58  TZ_America_Argentina_Catamarca,
59  TZ_America_Argentina_Cordoba,
60  TZ_America_Argentina_Jujuy,
61  TZ_America_Argentina_La_Rioja,
62  TZ_America_Argentina_Mendoza,
63  TZ_America_Argentina_Rio_Gallegos,
64  TZ_America_Argentina_Salta,
65  TZ_America_Argentina_San_Juan,
66  TZ_America_Argentina_San_Luis,
67  TZ_America_Argentina_Tucuman,
68  TZ_America_Argentina_Ushuaia,
69  TZ_America_Aruba,
70  TZ_America_Asuncion,
71  TZ_America_Atikokan,
72  TZ_America_Bahia,
73  TZ_America_Bahia_Banderas,
74  TZ_America_Barbados,
75  TZ_America_Belem,
76  TZ_America_Belize,
77  TZ_America_BlancmSablon,
78  TZ_America_Boa_Vista,
79  TZ_America_Bogota,
80  TZ_America_Boise,
81  TZ_America_Cambridge_Bay,
82  TZ_America_Campo_Grande,
83  TZ_America_Cancun,
84  TZ_America_Caracas,
85  TZ_America_Cayenne,
86  TZ_America_Cayman,
87  TZ_America_Chicago,
88  TZ_America_Chihuahua,
89  TZ_America_Costa_Rica,
90  TZ_America_Creston,
91  TZ_America_Cuiaba,
92  TZ_America_Curacao,
93  TZ_America_Danmarkshavn,
94  TZ_America_Dawson,
95  TZ_America_Dawson_Creek,
96  TZ_America_Denver,
97  TZ_America_Detroit,
98  TZ_America_Dominica,
99  TZ_America_Edmonton,
100 TZ_America_Eirunepe,
101 TZ_America_El_Salvador,
102 TZ_America_Fortaleza,
103 TZ_America_Fort_Nelson,
104 TZ_America_Glace_Bay,
105 TZ_America_Godthab,
106 TZ_America_Goose_Bay,
107 TZ_America_Grand_Turk,
108 TZ_America_Grenada,
109 TZ_America_Guadeloupe,
110 TZ_America_Guatemala,
111 TZ_America_Guayaquil,
112 TZ_America_Guyana,
113 TZ_America_Halifax,
114 TZ_America_Havana,
115 TZ_America_Hermosillo,
116 TZ_America_Indiana_Indianapolis,
117 TZ_America_Indiana_Knox,
118 TZ_America_Indiana_Marengo,
119 TZ_America_Indiana_Petersburg,
120 TZ_America_Indiana_Tell_City,
121 TZ_America_Indiana_Vevay,
122 TZ_America_Indiana_Vincennes,
123 TZ_America_Indiana_Winamac,
124 TZ_America_Inuvik,
125 TZ_America_Iqaluit,
126 TZ_America_Jamaica,
127 TZ_America_Juneau,
128 TZ_America_Kentucky_Louisville,
129 TZ_America_Kentucky_Monticello,
130 TZ_America_Kralendijk,
131 TZ_America_La_Paz,
132 TZ_America_Lima,
133 TZ_America_Los_Angeles,
134 TZ_America_Lower_Princes,
135 TZ_America_Maceio,
136 TZ_America_Managua,
137 TZ_America_Manaus,
138 TZ_America_Marigot,
139 TZ_America_Martinique,
140 TZ_America_Matamoros,
141 TZ_America_Mazatlan,
142 TZ_America_Menominee,
143 TZ_America_Merida,
144 TZ_America_Metlakatla,
145 TZ_America_Mexico_City,
146 TZ_America_Miquelon,
147 TZ_America_Moncton,
148 TZ_America_Monterrey,
149 TZ_America_Montevideo,
150 TZ_America_Montreal,
151 TZ_America_Montserrat,
152 TZ_America_Nassau,
153 TZ_America_New_York,
154 TZ_America_Nipigon,
155 TZ_America_Nome,
156 TZ_America_Noronha,
157 TZ_America_North_Dakota_Beulah,
158 TZ_America_North_Dakota_Center,
159 TZ_America_North_Dakota_New_Salem,
160 TZ_America_Nuuk,
161 TZ_America_Ojinaga,
162 TZ_America_Panama,
163 TZ_America_Pangnirtung,
164 TZ_America_Paramaribo,
165 TZ_America_Phoenix,
166 TZ_America_PortmaumPrince,
167 TZ_America_Port_of_Spain,
168 TZ_America_Porto_Velho,
169 TZ_America_Puerto_Rico,
170 TZ_America_Punta_Arenas,
171 TZ_America_Rainy_River,
172 TZ_America_Rankin_Inlet,
173 TZ_America_Recife,
174 TZ_America_Regina,
175 TZ_America_Resolute,
176 TZ_America_Rio_Branco,
177 TZ_America_Santarem,
178 TZ_America_Santiago,
179 TZ_America_Santo_Domingo,
180 TZ_America_Sao_Paulo,
181 TZ_America_Scoresbysund,
182 TZ_America_Sitka,
183 TZ_America_St_Barthelemy,
184 TZ_America_St_Johns,
185 TZ_America_St_Kitts,
186 TZ_America_St_Lucia,
187 TZ_America_St_Thomas,
188 TZ_America_St_Vincent,
189 TZ_America_Swift_Current,
190 TZ_America_Tegucigalpa,
191 TZ_America_Thule,
192 TZ_America_Thunder_Bay,
193 TZ_America_Tijuana,
194 TZ_America_Toronto,
195 TZ_America_Tortola,
196 TZ_America_Vancouver,
197 TZ_America_Whitehorse,
198 TZ_America_Winnipeg,
199 TZ_America_Yakutat,
200 TZ_America_Yellowknife,
201 TZ_Antarctica_Casey,
202 TZ_Antarctica_Davis,
203 TZ_Antarctica_DumontDUrville,
204 TZ_Antarctica_Macquarie,
205 TZ_Antarctica_Mawson,
206 TZ_Antarctica_McMurdo,
207 TZ_Antarctica_Palmer,
208 TZ_Antarctica_Rothera,
209 TZ_Antarctica_Syowa,
210 TZ_Antarctica_Troll,
211 TZ_Antarctica_Vostok,
212 TZ_Arctic_Longyearbyen,
213 TZ_Asia_Aden,
214 TZ_Asia_Almaty,
215 TZ_Asia_Amman,
216 TZ_Asia_Anadyr,
217 TZ_Asia_Aqtau,
218 TZ_Asia_Aqtobe,
219 TZ_Asia_Ashgabat,
220 TZ_Asia_Atyrau,
221 TZ_Asia_Baghdad,
222 TZ_Asia_Bahrain,
223 TZ_Asia_Baku,
224 TZ_Asia_Bangkok,
225 TZ_Asia_Barnaul,
226 TZ_Asia_Beirut,
227 TZ_Asia_Bishkek,
228 TZ_Asia_Brunei,
229 TZ_Asia_Chita,
230 TZ_Asia_Choibalsan,
231 TZ_Asia_Colombo,
232 TZ_Asia_Damascus,
233 TZ_Asia_Dhaka,
234 TZ_Asia_Dili,
235 TZ_Asia_Dubai,
236 TZ_Asia_Dushanbe,
237 TZ_Asia_Famagusta,
238 TZ_Asia_Gaza,
239 TZ_Asia_Hebron,
240 TZ_Asia_Ho_Chi_Minh,
241 TZ_Asia_Hong_Kong,
242 TZ_Asia_Hovd,
243 TZ_Asia_Irkutsk,
244 TZ_Asia_Jakarta,
245 TZ_Asia_Jayapura,
246 TZ_Asia_Jerusalem,
247 TZ_Asia_Kabul,
248 TZ_Asia_Kamchatka,
249 TZ_Asia_Karachi,
250 TZ_Asia_Kathmandu,
251 TZ_Asia_Khandyga,
252 TZ_Asia_Kolkata,
253 TZ_Asia_Krasnoyarsk,
254 TZ_Asia_Kuala_Lumpur,
255 TZ_Asia_Kuching,
256 TZ_Asia_Kuwait,
257 TZ_Asia_Macau,
258 TZ_Asia_Magadan,
259 TZ_Asia_Makassar,
260 TZ_Asia_Manila,
261 TZ_Asia_Muscat,
262 TZ_Asia_Nicosia,
263 TZ_Asia_Novokuznetsk,
264 TZ_Asia_Novosibirsk,
265 TZ_Asia_Omsk,
266 TZ_Asia_Oral,
267 TZ_Asia_Phnom_Penh,
268 TZ_Asia_Pontianak,
269 TZ_Asia_Pyongyang,
270 TZ_Asia_Qatar,
271 TZ_Asia_Qyzylorda,
272 TZ_Asia_Riyadh,
273 TZ_Asia_Sakhalin,
274 TZ_Asia_Samarkand,
275 TZ_Asia_Seoul,
276 TZ_Asia_Shanghai,
277 TZ_Asia_Singapore,
278 TZ_Asia_Srednekolymsk,
279 TZ_Asia_Taipei,
280 TZ_Asia_Tashkent,
281 TZ_Asia_Tbilisi,
282 TZ_Asia_Tehran,
283 TZ_Asia_Thimphu,
284 TZ_Asia_Tokyo,
285 TZ_Asia_Tomsk,
286 TZ_Asia_Ulaanbaatar,
287 TZ_Asia_Urumqi,
288 TZ_Asia_UstmNera,
289 TZ_Asia_Vientiane,
290 TZ_Asia_Vladivostok,
291 TZ_Asia_Yakutsk,
292 TZ_Asia_Yangon,
293 TZ_Asia_Yekaterinburg,
294 TZ_Asia_Yerevan,
295 TZ_Atlantic_Azores,
296 TZ_Atlantic_Bermuda,
297 TZ_Atlantic_Canary,
298 TZ_Atlantic_Cape_Verde,
299 TZ_Atlantic_Faroe,
300 TZ_Atlantic_Madeira,
301 TZ_Atlantic_Reykjavik,
302 TZ_Atlantic_South_Georgia,
303 TZ_Atlantic_Stanley,
304 TZ_Atlantic_St_Helena,
305 TZ_Australia_Adelaide,
306 TZ_Australia_Brisbane,
307 TZ_Australia_Broken_Hill,
308 TZ_Australia_Currie,
309 TZ_Australia_Darwin,
310 TZ_Australia_Eucla,
311 TZ_Australia_Hobart,
312 TZ_Australia_Lindeman,
313 TZ_Australia_Lord_Howe,
314 TZ_Australia_Melbourne,
315 TZ_Australia_Perth,
316 TZ_Australia_Sydney,
317 TZ_Europe_Amsterdam,
318 TZ_Europe_Andorra,
319 TZ_Europe_Astrakhan,
320 TZ_Europe_Athens,
321 TZ_Europe_Belgrade,
322 TZ_Europe_Berlin,
323 TZ_Europe_Bratislava,
324 TZ_Europe_Brussels,
325 TZ_Europe_Bucharest,
326 TZ_Europe_Budapest,
327 TZ_Europe_Busingen,
328 TZ_Europe_Chisinau,
329 TZ_Europe_Copenhagen,
330 TZ_Europe_Dublin,
331 TZ_Europe_Gibraltar,
332 TZ_Europe_Guernsey,
333 TZ_Europe_Helsinki,
334 TZ_Europe_Isle_of_Man,
335 TZ_Europe_Istanbul,
336 TZ_Europe_Jersey,
337 TZ_Europe_Kaliningrad,
338 TZ_Europe_Kiev,
339 TZ_Europe_Kirov,
340 TZ_Europe_Lisbon,
341 TZ_Europe_Ljubljana,
342 TZ_Europe_London,
343 TZ_Europe_Luxembourg,
344 TZ_Europe_Madrid,
345 TZ_Europe_Malta,
346 TZ_Europe_Mariehamn,
347 TZ_Europe_Minsk,
348 TZ_Europe_Monaco,
349 TZ_Europe_Moscow,
350 TZ_Europe_Oslo,
351 TZ_Europe_Paris,
352 TZ_Europe_Podgorica,
353 TZ_Europe_Prague,
354 TZ_Europe_Riga,
355 TZ_Europe_Rome,
356 TZ_Europe_Samara,
357 TZ_Europe_San_Marino,
358 TZ_Europe_Sarajevo,
359 TZ_Europe_Saratov,
360 TZ_Europe_Simferopol,
361 TZ_Europe_Skopje,
362 TZ_Europe_Sofia,
363 TZ_Europe_Stockholm,
364 TZ_Europe_Tallinn,
365 TZ_Europe_Tirane,
366 TZ_Europe_Ulyanovsk,
367 TZ_Europe_Uzhgorod,
368 TZ_Europe_Vaduz,
369 TZ_Europe_Vatican,
370 TZ_Europe_Vienna,
371 TZ_Europe_Vilnius,
372 TZ_Europe_Volgograd,
373 TZ_Europe_Warsaw,
374 TZ_Europe_Zagreb,
375 TZ_Europe_Zaporozhye,
376 TZ_Europe_Zurich,
377 TZ_Indian_Antananarivo,
378 TZ_Indian_Chagos,
379 TZ_Indian_Christmas,
380 TZ_Indian_Cocos,
381 TZ_Indian_Comoro,
382 TZ_Indian_Kerguelen,
383 TZ_Indian_Mahe,
384 TZ_Indian_Maldives,
385 TZ_Indian_Mauritius,
386 TZ_Indian_Mayotte,
387 TZ_Indian_Reunion,
388 TZ_Pacific_Apia,
389 TZ_Pacific_Auckland,
390 TZ_Pacific_Bougainville,
391 TZ_Pacific_Chatham,
392 TZ_Pacific_Chuuk,
393 TZ_Pacific_Easter,
394 TZ_Pacific_Efate,
395 TZ_Pacific_Enderbury,
396 TZ_Pacific_Fakaofo,
397 TZ_Pacific_Fiji,
398 TZ_Pacific_Funafuti,
399 TZ_Pacific_Galapagos,
400 TZ_Pacific_Gambier,
401 TZ_Pacific_Guadalcanal,
402 TZ_Pacific_Guam,
403 TZ_Pacific_Honolulu,
404 TZ_Pacific_Kiritimati,
405 TZ_Pacific_Kosrae,
406 TZ_Pacific_Kwajalein,
407 TZ_Pacific_Majuro,
408 TZ_Pacific_Marquesas,
409 TZ_Pacific_Midway,
410 TZ_Pacific_Nauru,
411 TZ_Pacific_Niue,
412 TZ_Pacific_Norfolk,
413 TZ_Pacific_Noumea,
414 TZ_Pacific_Pago_Pago,
415 TZ_Pacific_Palau,
416 TZ_Pacific_Pitcairn,
417 TZ_Pacific_Pohnpei,
418 TZ_Pacific_Port_Moresby,
419 TZ_Pacific_Rarotonga,
420 TZ_Pacific_Saipan,
421 TZ_Pacific_Tahiti,
422 TZ_Pacific_Tarawa,
423 TZ_Pacific_Tongatapu,
424 TZ_Pacific_Wake,
425 TZ_Pacific_Wallis,
426 TZ_Etc_GMT,
427 TZ_Etc_GMTm0,
428 TZ_Etc_GMTm1,
429 TZ_Etc_GMTm2,
430 TZ_Etc_GMTm3,
431 TZ_Etc_GMTm4,
432 TZ_Etc_GMTm5,
433 TZ_Etc_GMTm6,
434 TZ_Etc_GMTm7,
435 TZ_Etc_GMTm8,
436 TZ_Etc_GMTm9,
437 TZ_Etc_GMTm10,
438 TZ_Etc_GMTm11,
439 TZ_Etc_GMTm12,
440 TZ_Etc_GMTm13,
441 TZ_Etc_GMTm14,
442 TZ_Etc_GMT0,
443 TZ_Etc_GMTp0,
444 TZ_Etc_GMTp1,
445 TZ_Etc_GMTp2,
446 TZ_Etc_GMTp3,
447 TZ_Etc_GMTp4,
448 TZ_Etc_GMTp5,
449 TZ_Etc_GMTp6,
450 TZ_Etc_GMTp7,
451 TZ_Etc_GMTp8,
452 TZ_Etc_GMTp9,
453 TZ_Etc_GMTp10,
454 TZ_Etc_GMTp11,
455 TZ_Etc_GMTp12,
456 TZ_Etc_UCT,
457 TZ_Etc_UTC,
458 TZ_Etc_Greenwich,
459 TZ_Etc_Universal,
460 TZ_Etc_Zulu,
 */

RotatingClock_ESP8266_V2_AllFiles

Plain text
No preview (download only).

Video

Plain text
Video of clock in use from power up
No preview (download only).

Credits

JSMSolns
12 projects • 38 followers
Contact

Comments

Please log in or sign up to comment.