tz- Efficient time zone handling

MaintainerMihaly Barasz <>
Safe HaskellNone






Various ways of loading TZ

loadTZFromFile :: FilePath -> IO TZSource

Reads and parses a time zone information file (in tzfile(5) aka. Olson file format) and returns the corresponding TZ data structure.

loadSystemTZ :: String -> IO TZSource

Looks for the time zone file in the system timezone directory, which is /usr/share/zoneinfo, or if the TZDIR environment variable is set, then there.

pathForSystemTZ :: String -> IO FilePathSource

Return the path for a time zone file in the system time zone directory.

The system directory is specified by the TZDIR environment variable, or /usr/share/zoneinfo if it's not set.

loadLocalTZ :: IO TZSource

Returns the local TZ based on the TZ and TZDIR environment variables.

See tzset(3) for details, but basically:

  • If TZ environment variable is unset, we loadTZFromFile "/etc/localtime".
  • If TZ is set, but empty, we loadSystemTZ "UTC".
  • Otherwise, we just loadSystemTZ it.

Note, this means we don't support POSIX-style TZ variables (like "EST5EDT"), only those that are explicitly present in the time zone database.

loadTZFromDB :: String -> IO TZSource

Reads the corresponding file from the time zone database shipped with this package.

Parsing Olson data