ezic

ezic is a set of erlang utilities for the Olsen timezone database files. See the tz database page for more information.

API

  • ezic:localtime(TimeZone) -> datetime()
  • ezic:utc_to_time(universal_datetime(), TimeZone) -> local_datetime()
  • ezic:utc_from_time(local_datetime(), TimeZone) -> universal_datetime()
  • ezic:zone_convert(from_datetime(), TimeZoneFrom, TimeZoneTo) -> to_datetime()

Admin API

  • ezic:load("/path/to/tzdata") -> ok

Setup

# download the timezone data files
wget 'ftp://elsie.nci.nih.gov/pub/tzdata*.tar.gz'
tar -xvzf tzdata*.tar.gz -C /path/to/tzdata

# remove a few troublesome files
cd /path/to/tzdata
rm *.sh *.tab factory

# build and run ezic
make all run
1> ezic:load("/path/to/tzdata").
2> ezic:localtime("Australia/Adelaide").

Purpose

The recommended way of handling timezones in erlang involves setting the system environment variable TZ to the desired timezone, then calling erlang time functions. This technique has a few key issues:

  • it only works on *nix systems,
  • it depends on your system's timezone data (preventing custom timezone hackery), and
  • you can create race conditions if you aren't careful

A self-containted erlang solution would avoid these pitfalls, but to be fair, it introduces a few others:

  • you (the admin) are responsible for updating the timezone database yourself
  • ezic has not yet been battle tested

I think both of these issues will disappear over time, so I opted to write ezic.

License

This project is in the public domain.

Description
No description provided
Readme 206 KiB
Languages
Erlang 99.2%
Makefile 0.8%