package module
v0.0.0-...-bf33363 Latest Latest

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

Go to latest
Published: Jan 17, 2023 License: MIT Imports: 7 Imported by: 4


Package tz provides a wrapper for time.Location with additional information about timezones.

Every timezone is represented by a zone name (Europe/Amsterdam) and a country (NL). The rationale for this is mostly a user interface one: it makes more sense to display a list of countries first and then a list of timezones, instead of just presenting a huge list of timezones.

For example, my current TZ is Asia/Makkasar (WITA), but it's much easier to select "Indonesia" from a list, and then choose one of the four timezones in Indonesia:

Indonesia: Asia/Jayapura  (WIT)  – New Guinea (West Papua / Irian Jaya); Malukus/Moluccas
Indonesia: Asia/Makassar  (WITA) – Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west)
Indonesia: Asia/Pontianak (WIB)  – Borneo (west, central)
Indonesia: Asia/Jakarta   (WIB)  – Java, Sumatra

We need to store both to make sure people who fill in "Isle of Man, Europe/London" aren't shown "you selected Britain, Europe/London" when they revisit a settings page.



Package tz contains timezone lists.



This section is empty.


View Source
var UTC = &Zone{CountryCode: "", Zone: "UTC", Abbr: []string{"UTC"}, CountryName: "UTC", Comments: "", Location: time.UTC}

UTC timezone.

View Source
var Zones = []*Zone{}/* 429 elements not displayed */

Zones is a list of all timezones by country.


This section is empty.


type Zone

type Zone struct {

	CountryCode string   // ID
	Zone        string   // Asia/Makassar
	Abbr        []string // WITA – the correct abbreviation may change depending on the time of year (i.e. CET and CEST, depending on DST).
	CountryName string   // Indonesia
	Comments    string   // Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west)
	// contains filtered or unexported fields

Zone represents a time zone.

func MustNew

func MustNew(ccode, zone string) *Zone

MustNew behaves like New(), but will panic on errors.

func New

func New(ccode, zone string) (*Zone, error)

New timezone from country code and zone name. The country code is only informative, and may be blank or wrong, in which case it will load the first zone found.

func (*Zone) Display

func (t *Zone) Display() string

Display a human-readable description of the timezone, for e.g. <option>.

func (*Zone) Loc

func (t *Zone) Loc() *time.Location

Loc gets the time.Location, or UTC if it's not set.

func (Zone) MarshalText

func (t Zone) MarshalText() ([]byte, error)

MarshalText converts the data to a human readable representation.

func (*Zone) Offset

func (t *Zone) Offset() int

Offset gets the timezone offset in minutes.

func (*Zone) OffsetDisplay

func (t *Zone) OffsetDisplay() string

OffsetDisplay gets the offset as a human readable string: "UTC +8:00", "UTC -7:30", "UTC".

Note that this displays the offset that is currently valid. For example Europe/Berlin may be +0100 or +0200, depending on whether DST is in effect.

func (*Zone) OffsetRFC3339

func (t *Zone) OffsetRFC3339() string

OffsetRFC3339 gets the offset as a RFC3339 string: "+08:00", "-07:30", "UTC".

Note that this displays the offset that is currently valid. For example Europe/Berlin may be +0100 or +0200, depending on whether DST is in effect.

func (*Zone) Scan

func (t *Zone) Scan(v interface{}) error

Scan converts the data returned from the DB into the struct.

func (*Zone) String

func (t *Zone) String() string

String is an unique representation for this timezone.

func (*Zone) UnmarshalText

func (t *Zone) UnmarshalText(v []byte) error

UnmarshalText parses text in to the Go data structure.

func (Zone) Value

func (t Zone) Value() (driver.Value, error)

Value implements the SQL Value function to determine what to store in the DB.

Jump to

Keyboard shortcuts

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