[HELP] World Clock code

Daylight savings time

As the title suggests, I'm having difficulty with my World Clock adjusting to Daylight Savings Time. Below is the code I'm using which works fine but does not take into account the loss or gain of an hour depending on which city is selected. I've tried having it look to see what month we are in and adjusting from there but it didn't seem to work.

Code
  1. Dim GMT
  2. 'Called when the script is executed
  3. Sub Object_OnScriptEnter
  4. GMT = 15
  5. Control.BackColor = RGB(252,252,252)
  6. Control.ForeColor = RGB(42,42,42)
  7. Control.SelectionBackColor = RGB(128,140,155)
  8. Control.SelectionForeColor = RGB(252,252,252)
  9. Control.AddItem "Midway Island"
  10. Control.AddItem "Honolulu"
  11. Control.AddItem "Los Angelos"
  12. Control.AddItem "Seattle"
  13. Control.AddItem "Albuquerque"
  14. Control.AddItem "Dallas"
  15. Control.AddItem "Mexico City"
  16. Control.AddItem "New York"
  17. Control.AddItem "Philadelphia"
  18. Control.AddItem "Washington, DC"
  19. Control.AddItem "Miami"
  20. Control.AddItem "Buenos Aires"
  21. Control.AddItem "Dublin"
  22. Control.AddItem "London"
  23. Control.AddItem "Lisbon"
  24. Control.AddItem "Berlin"
  25. Control.AddItem "Amsterdam"
  26. Control.AddItem "Rome"
  27. Control.AddItem "Paris"
  28. Control.AddItem "Madrid"
  29. Control.AddItem "Warsaw"
  30. Control.AddItem "Athens"
  31. Control.AddItem "Instanbul"
  32. Control.AddItem "Bucharest"
  33. Control.AddItem "Cairo"
  34. Control.AddItem "Helsinki"
  35. Control.AddItem "Jerusalem"
  36. Control.AddItem "Baghdad"
  37. Control.AddItem "Riyadh"
  38. Control.AddItem "Moscow"
  39. Control.AddItem "St. Petersburg"
  40. Control.AddItem "Nairobi"
  41. Control.AddItem "Bangkok"
  42. Control.AddItem "Jakarta"
  43. Control.AddItem "Beijing"
  44. Control.AddItem "Hong Kong"
  45. Control.AddItem "Singapore"
  46. Control.AddItem "Kuala Lumpur"
  47. Control.AddItem "Perth"
  48. Control.AddItem "Taipei"
  49. Control.AddItem "Tokyo"
  50. Control.AddItem "Seoul"
  51. Control.AddItem "Brisbane"
  52. Control.AddItem "Melbourne"
  53. Control.AddItem "Werribee"
  54. Control.AddItem "Sydney"
  55. Control.AddItem "Canberra"
  56. Control.AddItem "Guam"
  57. Control.AddItem "Auckland"
  58. Control.AddItem "Fiji"
  59. Control.ListIndex = 0
  60. End Sub
  61. Sub Control_OnSelect(item, string)
  62. If Control.Text = "Midway Island" Then
  63. DesktopX.Object("anaLocation1").Text = "MIDWAY ISLAND"
  64. DesktopX.ScriptObject("anaHour1").Offset = GMT - 11
  65. ElseIf Control.Text = "Honolulu" Then
  66. DesktopX.Object("anaLocation1").Text = "HONOLULU"
  67. DesktopX.ScriptObject("anaHour1").Offset = GMT - 10
  68. ElseIf Control.Text = "Los Angelos" Then
  69. DesktopX.Object("anaLocation1").Text = "LOS ANGELOS"
  70. DesktopX.ScriptObject("anaHour1").Offset = GMT - 8
  71. ElseIf Control.Text = "Seattle" Then
  72. DesktopX.Object("anaLocation1").Text = "SEATTLE"
  73. DesktopX.ScriptObject("anaHour1").Offset = GMT - 8
  74. ElseIf Control.Text = "Albuquerque" Then
  75. DesktopX.Object("anaLocation1").Text = "ALBUQUERQUE"
  76. DesktopX.ScriptObject("anaHour1").Offset = GMT - 7
  77. ElseIf Control.Text = "Dallas" Then
  78. DesktopX.Object("anaLocation1").Text = "DALLAS"
  79. DesktopX.ScriptObject("anaHour1").Offset = GMT - 6
  80. ElseIf Control.Text = "Mexico City" Then
  81. DesktopX.Object("anaLocation1").Text = "MEXICO CITY"
  82. DesktopX.ScriptObject("anaHour1").Offset = GMT - 6
  83. ElseIf Control.Text = "New York" Then
  84. DesktopX.Object("anaLocation1").Text = "NEW YORK"
  85. DesktopX.ScriptObject("anaHour1").Offset = GMT - 5
  86. ElseIf Control.Text = "Philadelphia" Then
  87. DesktopX.Object("anaLocation1").Text = "PHILADELPHIA"
  88. DesktopX.ScriptObject("anaHour1").Offset = GMT - 5
  89. ElseIf Control.Text = "Washington, DC" Then
  90. DesktopX.Object("anaLocation1").Text = "WASHINGTON, DC"
  91. DesktopX.ScriptObject("anaHour1").Offset = GMT - 5
  92. ElseIf Control.Text = "Miami" Then
  93. DesktopX.Object("anaLocation1").Text = "MIAMI"
  94. DesktopX.ScriptObject("anaHour1").Offset = GMT - 5
  95. ElseIf Control.Text = "Buenos Aires" Then
  96. DesktopX.Object("anaLocation1").Text = "BUENOS AIRES"
  97. DesktopX.ScriptObject("anaHour1").Offset = GMT - 3
  98. ElseIf Control.Text = "Dublin" Then
  99. DesktopX.Object("anaLocation1").Text = "DUBLIN"
  100. DesktopX.ScriptObject("anaHour1").Offset = GMT + 0
  101. ElseIf Control.Text = "London" Then
  102. DesktopX.Object("anaLocation1").Text = "LONDON"
  103. DesktopX.ScriptObject("anaHour1").Offset = GMT + 0
  104. ElseIf Control.Text = "Lisbon" Then
  105. DesktopX.Object("anaLocation1").Text = "LISBON"
  106. DesktopX.ScriptObject("anaHour1").Offset = GMT + 0
  107. ElseIf Control.Text = "Berlin" Then
  108. DesktopX.Object("anaLocation1").Text = "BERLIN"
  109. DesktopX.ScriptObject("anaHour1").Offset = GMT + 1
  110. ElseIf Control.Text = "Amsterdam" Then
  111. DesktopX.Object("anaLocation1").Text = "AMSTERDAM"
  112. DesktopX.ScriptObject("anaHour1").Offset = GMT + 1
  113. ElseIf Control.Text = "Rome" Then
  114. DesktopX.Object("anaLocation1").Text = "ROME"
  115. DesktopX.ScriptObject("anaHour1").Offset = GMT + 1
  116. ElseIf Control.Text = "Paris" Then
  117. DesktopX.Object("anaLocation1").Text = "PARIS"
  118. DesktopX.ScriptObject("anaHour1").Offset = GMT + 1
  119. ElseIf Control.Text = "Madrid" Then
  120. DesktopX.Object("anaLocation1").Text = "MADRID"
  121. DesktopX.ScriptObject("anaHour1").Offset = GMT + 1
  122. ElseIf Control.Text = "Warsaw" Then
  123. DesktopX.Object("anaLocation1").Text = "WARSAW"
  124. DesktopX.ScriptObject("anaHour1").Offset = GMT + 1
  125. ElseIf Control.Text = "Athens" Then
  126. DesktopX.Object("anaLocation1").Text = "ATHENS"
  127. DesktopX.ScriptObject("anaHour1").Offset = GMT + 2
  128. ElseIf Control.Text = "Istanbul" Then
  129. DesktopX.Object("anaLocation1").Text = "ISTANBUL"
  130. DesktopX.ScriptObject("anaHour1").Offset = GMT + 2
  131. ElseIf Control.Text = "Bucharest" Then
  132. DesktopX.Object("anaLocation1").Text = "BUCHAREST"
  133. DesktopX.ScriptObject("anaHour1").Offset = GMT + 2
  134. ElseIf Control.Text = "Cairo" Then
  135. DesktopX.Object("anaLocation1").Text = "CARIO"
  136. DesktopX.ScriptObject("anaHour1").Offset = GMT + 2
  137. ElseIf Control.Text = "Helsinki" Then
  138. DesktopX.Object("anaLocation1").Text = "HELSINKI"
  139. DesktopX.ScriptObject("anaHour1").Offset = GMT + 2
  140. ElseIf Control.Text = "Jerusalem" Then
  141. DesktopX.Object("anaLocation1").Text = "JERUSALEM"
  142. DesktopX.ScriptObject("anaHour1").Offset = GMT + 2
  143. ElseIf Control.Text = "Baghdad" Then
  144. DesktopX.Object("anaLocation1").Text = "BAGHDAD"
  145. DesktopX.ScriptObject("anaHour1").Offset = GMT + 3
  146. ElseIf Control.Text = "Riyahd" Then
  147. DesktopX.Object("anaLocation1").Text = "RIYAHD"
  148. DesktopX.ScriptObject("anaHour1").Offset = GMT + 3
  149. ElseIf Control.Text = "Moscow" Then
  150. DesktopX.Object("anaLocation1").Text = "MOSCOW"
  151. DesktopX.ScriptObject("anaHour1").Offset = GMT + 3
  152. ElseIf Control.Text = "St. Petersburg" Then
  153. DesktopX.Object("anaLocation1").Text = "ST. PETERSBURG"
  154. DesktopX.ScriptObject("anaHour1").Offset = GMT + 3
  155. ElseIf Control.Text = "Bangkok" Then
  156. DesktopX.Object("anaLocation1").Text = "BANGKOK"
  157. DesktopX.ScriptObject("anaHour1").Offset = GMT + 7
  158. ElseIf Control.Text = "Jakarta" Then
  159. DesktopX.Object("anaLocation1").Text = "JAKARTA"
  160. DesktopX.ScriptObject("anaHour1").Offset = GMT + 7
  161. ElseIf Control.Text = "Beijing" Then
  162. DesktopX.Object("anaLocation1").Text = "BEIJING"
  163. DesktopX.ScriptObject("anaHour1").Offset = GMT + 8
  164. ElseIf Control.Text = "Hong Kong" Then
  165. DesktopX.Object("anaLocation1").Text = "HONG KONG"
  166. DesktopX.ScriptObject("anaHour1").Offset = GMT + 8
  167. ElseIf Control.Text = "Singapore" Then
  168. DesktopX.Object("anaLocation1").Text = "SINGAPORE"
  169. DesktopX.ScriptObject("anaHour1").Offset = GMT + 8
  170. ElseIf Control.Text = "Kuala Lumpur" Then
  171. DesktopX.Object("anaLocation1").Text = "KUALA LAMPUR"
  172. DesktopX.ScriptObject("anaHour1").Offset = GMT + 8
  173. ElseIf Control.Text = "Perth" Then
  174. DesktopX.Object("anaLocation1").Text = "PERTH"
  175. DesktopX.ScriptObject("anaHour1").Offset = GMT + 8
  176. ElseIf Control.Text = "Taipei" Then
  177. DesktopX.Object("anaLocation1").Text = "TAIPEI"
  178. DesktopX.ScriptObject("anaHour1").Offset = GMT + 8
  179. ElseIf Control.Text = "Tokyo" Then
  180. DesktopX.Object("anaLocation1").Text = "TOKYO"
  181. DesktopX.ScriptObject("anaHour1").Offset = GMT + 9
  182. ElseIf Control.Text = "Seoul" Then
  183. DesktopX.Object("anaLocation1").Text = "SEOUL"
  184. DesktopX.ScriptObject("anaHour1").Offset = GMT + 9
  185. ElseIf Control.Text = "Brisbane" Then
  186. DesktopX.Object("anaLocation1").Text = "BRISBANE"
  187. DesktopX.ScriptObject("anaHour1").Offset = GMT + 10
  188. ElseIf Control.Text = "Melbourne" Then
  189. DesktopX.Object("anaLocation1").Text = "MELBOURNE"
  190. DesktopX.ScriptObject("anaHour1").Offset = GMT + 12
  191. ElseIf Control.Text = "Werribee" Then
  192. DesktopX.Object("anaLocation1").Text = "WERRIBEE"
  193. DesktopX.ScriptObject("anaHour1").Offset = GMT + 12
  194. ElseIf Control.Text = "Sydney" Then
  195. DesktopX.Object("anaLocation1").Text = "SYDNEY"
  196. DesktopX.ScriptObject("anaHour1").Offset = GMT + 12
  197. ElseIf Control.Text = "Canberra" Then
  198. DesktopX.Object("anaLocation1").Text = "CANBERRA"
  199. DesktopX.ScriptObject("anaHour1").Offset = GMT + 12
  200. ElseIf Control.Text = "Guam" Then
  201. DesktopX.Object("anaLocation1").Text = "GUAM"
  202. DesktopX.ScriptObject("anaHour1").Offset = GMT + 10
  203. ElseIf Control.Text = "Auckland" Then
  204. DesktopX.Object("anaLocation1").Text = "AUCKLAND"
  205. DesktopX.ScriptObject("anaHour1").Offset = GMT + 12
  206. ElseIf Control.Text = "Fiji" Then
  207. DesktopX.Object("anaLocation1").Text = "FIJI"
  208. DesktopX.ScriptObject("anaHour1").Offset = GMT + 12
  209. End If
  210. End Sub


Anyone have any ideas???
3,705 views 3 replies
Reply #1 Top
The thing is that not everyone use daylight setting. So how would people know what city to pick in order to get what's right for them, unless they live in that city. Would it work if you simply had a checkbox to indicate whether to use daylight saving or not. Then add that to you calculation.

Another thing, isn't GMT affected by daylight saving time? So if you use GMT as a base, won't all ther other times be adjusted similary as as well?
Reply #2 Top
GMT does not change due to daylight saving times. The time in Greenwich does but then it is British Summer Time and not GMT.
Its probably better to use UTC rather than GMT. They are the same but UTC is the now the standard term used.
Reply #3 Top
This site will probably be useful for you.

Sources for Time Zone and Daylight Saving Time Data
Link