zone

package
v0.6.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package zone provides internal IANA timezone data and DST projection utilities.

Index

Constants

This section is empty.

Variables

View Source
var WindowsToIANA = map[string]string{}/* 140 elements not displayed */

WindowsToIANA maps Windows timezone names to their canonical IANA timezone IDs. Source: Unicode CLDR windowsZones.xml (territory "001" = default mapping).

View Source
var Zones = func() []string {
	raw := []string{

		"Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers",
		"Africa/Asmara", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul",
		"Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura",
		"Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry",
		"Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala",
		"Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare",
		"Africa/Johannesburg", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum",
		"Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville",
		"Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka",
		"Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane",
		"Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena",
		"Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo",
		"Africa/Sao_Tome", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek",

		"America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua",
		"America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca",
		"America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja",
		"America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta",
		"America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman",
		"America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan",
		"America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem",
		"America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota",
		"America/Boise", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun",
		"America/Caracas", "America/Cayenne", "America/Cayman", "America/Chicago",
		"America/Chihuahua", "America/Costa_Rica", "America/Creston", "America/Cuiaba",
		"America/Curacao", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek",
		"America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton",
		"America/Eirunepe", "America/El_Salvador", "America/Fortaleza", "America/Glace_Bay",
		"America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe",
		"America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax",
		"America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis",
		"America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg",
		"America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes",
		"America/Indiana/Winamac", "America/Inuvik", "America/Iqaluit", "America/Jamaica",
		"America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello",
		"America/Kralendijk", "America/La_Paz", "America/Lima", "America/Los_Angeles",
		"America/Lower_Princes", "America/Maceio", "America/Managua", "America/Manaus",
		"America/Marigot", "America/Martinique", "America/Matamoros", "America/Mazatlan",
		"America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City",
		"America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo",
		"America/Montserrat", "America/Nassau", "America/New_York", "America/Nome",
		"America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center",
		"America/North_Dakota/New_Salem", "America/Nuuk", "America/Ojinaga", "America/Panama",
		"America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Port_of_Spain",
		"America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas",
		"America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute",
		"America/Rio_Branco", "America/Santarem", "America/Santiago", "America/Santo_Domingo",
		"America/Sao_Paulo", "America/Scoresbysund", "America/Sitka", "America/St_Barthelemy",
		"America/St_Johns", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas",
		"America/St_Vincent", "America/Swift_Current", "America/Tegucigalpa", "America/Thule",
		"America/Tijuana", "America/Toronto", "America/Tortola", "America/Vancouver",
		"America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife",

		"Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville",
		"Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/McMurdo",
		"Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/Syowa",
		"Antarctica/Troll", "Antarctica/Vostok",

		"Arctic/Longyearbyen",

		"Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau",
		"Asia/Aqtobe", "Asia/Ashgabat", "Asia/Atyrau", "Asia/Baghdad", "Asia/Bahrain",
		"Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek",
		"Asia/Brunei", "Asia/Chita", "Asia/Choibalsan", "Asia/Colombo", "Asia/Damascus",
		"Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta",
		"Asia/Gaza", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd",
		"Asia/Irkutsk", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul",
		"Asia/Kamchatka", "Asia/Karachi", "Asia/Kathmandu", "Asia/Khandyga", "Asia/Kolkata",
		"Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macau",
		"Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia",
		"Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh",
		"Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda",
		"Asia/Riyadh", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai",
		"Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi",
		"Asia/Tehran", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ulaanbaatar",
		"Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk",
		"Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan",

		"Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde",
		"Atlantic/Faroe", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia",
		"Atlantic/St_Helena", "Atlantic/Stanley",

		"Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill",
		"Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/Lindeman",
		"Australia/Lord_Howe", "Australia/Melbourne", "Australia/Perth", "Australia/Sydney",

		"Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens",
		"Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels",
		"Europe/Bucharest", "Europe/Budapest", "Europe/Busingen", "Europe/Chisinau",
		"Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Guernsey",
		"Europe/Helsinki", "Europe/Isle_of_Man", "Europe/Istanbul", "Europe/Jersey",
		"Europe/Kaliningrad", "Europe/Kirov", "Europe/Kyiv", "Europe/Lisbon",
		"Europe/Ljubljana", "Europe/London", "Europe/Luxembourg", "Europe/Madrid",
		"Europe/Malta", "Europe/Mariehamn", "Europe/Minsk", "Europe/Monaco",
		"Europe/Moscow", "Europe/Nicosia", "Europe/Oslo", "Europe/Paris",
		"Europe/Podgorica", "Europe/Prague", "Europe/Riga", "Europe/Rome",
		"Europe/Samara", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Saratov",
		"Europe/Simferopol", "Europe/Skopje", "Europe/Sofia", "Europe/Stockholm",
		"Europe/Tallinn", "Europe/Tirane", "Europe/Ulyanovsk", "Europe/Vaduz",
		"Europe/Vatican", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd",
		"Europe/Warsaw", "Europe/Zagreb", "Europe/Zurich",

		"Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos",
		"Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives",
		"Indian/Mauritius", "Indian/Mayotte", "Indian/Reunion",

		"Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham",
		"Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Fakaofo",
		"Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier",
		"Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Kanton",
		"Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro",
		"Pacific/Marquesas", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk",
		"Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn",
		"Pacific/Pohnpei", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan",
		"Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Wake",
		"Pacific/Wallis",

		"UTC",
	}
	slices.Sort(raw)
	return raw
}()

Zones is a sorted list of canonical IANA timezone identifiers embedded at build time. Callers must not mutate this slice.

Functions

func ResolveLocation

func ResolveLocation(id string) (string, *time.Location, bool)

ResolveLocation resolves an IANA name, case-insensitive IANA name, Windows timezone name, or fixed offset string into a canonical ID and location.

Types

type DSTStatus

type DSTStatus int

DSTStatus describes the DST classification of a projected local time.

const (
	// DSTNormal means the local time maps to exactly one UTC instant.
	DSTNormal DSTStatus = iota
	// DSTNonexistent means the local time falls in a spring-forward gap (no such wall time exists).
	DSTNonexistent
	// DSTAmbiguous means the local time falls in a fall-back overlap (two UTC instants map to it).
	DSTAmbiguous
)

type LocalTimeResult

type LocalTimeResult struct {
	// Status classifies the local time as normal, nonexistent, or ambiguous.
	Status DSTStatus
	// Times holds the matching instants in chronological order.
	Times []time.Time
}

LocalTimeResult holds the outcome of projecting a local wall-clock time into a timezone.

func ProjectLocalTime

func ProjectLocalTime(loc *time.Location, year int, month time.Month, day, hour, minute, second int) LocalTimeResult

ProjectLocalTime projects a local wall-clock time into loc and classifies the DST status.

Algorithm:

  1. Construct t = time.Date(year, month, day, hour, minute, second, 0, loc).
  2. Gap detection: if t's actual local components differ from requested, the wall time does not exist. Compare the date too, because some zones skip whole calendar days.
  3. Overlap detection: collect nearby UTC offsets and reproject the same wall time under each offset. This catches non-hour transitions such as Australia/Lord_Howe's 30-minute fall-back overlap without assuming every DST boundary is exactly one hour.
  4. Otherwise → DSTNormal with a single instant.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL