@hackage timezone-detect0.2.0.0

Haskell bindings for the zone-detect C library; plus tz-aware utils.

TimezoneDetect

build

Haskell bindings to the excellent ZoneDetect library, plus additional UNIX-aware facilities to determine the UTC time of a given local time in a latitude and longitude.

Usage

You'll need timezone database files to work with this library, see instructions in the original repository.

Once you have those files in hand, you'll be able to get a timezone from a given latitude and longitude:

>>> lookupTimeZoneName "./test/tz_db/timezone21.bin" 40.7831 (-73.9712) :: Maybe TimeZoneName
Just "America/New_York"

Additionally, we now depend on the timezone-series and timezone-olson packages to add awareness of tz database information.

With that, you can look up the UTC time at a point in time and space:

>>> import Data.Time
>>> localWinter <- parseTimeM True defaultTimeLocale "%Y-%-m-%-d %T" "2019-12-25 00:30:00"
>>> utcTime <- timeAtPointToUTC "./test/tz_db/timezone21.bin" 40.7831 (-73.9712) localWinter
2019-12-25 05:30:00 UTC

>>> localSummer <- parseTimeM True defaultTimeLocale "%Y-%-m-%-d %T" "2019-07-25 00:30:00"
>>> utcTime <- timeAtPointToUTC "./test/tz_db/timezone21.bin" 40.7831 (-73.9712) localWinter
2019-12-25 04:30:00 UTC