It is a combination. Rules are set differently for different years. As the Wikipedia defines: “Within the tz database, a time zone is any national region where local clocks have all agreed since 1970”. The names of time zones typically combine a continent name and a city name. Someone had the wise insight that cities tend to be more stable than country borders and names.
For a given time, the tz database matches an Olson time zone to a traditional one like BST. But it may match the same Olson tz to different traditional time zones for different dates. The following AppleScript shows that (I have a day-month-year date format, Time zone is Europe/Berlin):
set dt1 to date ("1.7.2013")
set dt2 to date ("1.7.1975")
tell application "System Events"
set pl to (make new property list item with properties {value:{dt1, dt2}})
set r to text of pl
end tell
r
(* r now is
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<array>
<date>2013-06-30T22:00:00Z</date>
<date>1975-06-30T23:00:00Z</date>
</array>
</plist>
"
*)
Both dates are midnight and both are in the summer. The 2013 time is two hours apart from UTC, the 1975 date is one hour apart. (We switched 1980 in Germany.) Europe/Berlin is matched to CEST for 2013 and to CET for 1975.
If you check the tz file for Asia and have a look at Israel, you will find that almost every year has its own rule. (Rules are in the Gregorian calendar. If memory serves, Israel uses the Hebrew calendar for the switch in autumn so far.)
So the important points to keep in mind:
If your region has no daylight saving time (like Hawaii in the original question) and never had, “time to gmt” can be used to convert from local time to UTC and vice versa.
In all other cases, conversion is tricky. Have a look at Nigel’s script that McUsrII linked above.
(Just another nasty effect:
set dt1 to date ("26.10.2013 12:00")
set dt2 to date ("27.10.2013 12:00")
(dt2 - dt1) / hours
returns 24.0
Actually the difference is 25 hours difference in my time zone.)
Jürgen