49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
ezic
|
|
====
|
|
ezic is a set of erlang utilities for the Olsen timezone database files.
|
|
|
|
see the [tz database](http://www.twinsun.com/tz/tz-link.htm) page for more information.
|
|
|
|
|
|
Usage
|
|
-----
|
|
|
|
# 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").
|
|
|
|
|
|
API
|
|
---
|
|
|
|
* `ezic:load(Folder)`
|
|
* `ezic:localtime(TimeZone) -> datetime()`
|
|
* `ezic:time(datetime(), TimeZone) -> datetime()`
|
|
* `ezic:time2time(datetime(), TimeZoneFrom, TimeZoneTo) -> datetime()`
|
|
|
|
|
|
Purpose
|
|
-------
|
|
|
|
The [recommended way](http://www.erlang.org/pipermail/erlang-questions/2006-December/024291.html) of handling timezones in erlang involves setting the system environment variable `TZ` to the desired timezone, then calling erlang time functions. This technique is probably sufficient for many purposes, but it has a few key issues:
|
|
|
|
* it only works on *nix systems,
|
|
* it depends on your system's timezone data (preventing customization), and
|
|
* you can create race conditions if you aren't careful
|
|
|
|
A pure erlang solution avoids all of these pitfalls, hence this project.
|
|
|
|
License
|
|
-------
|
|
|
|
This project is in the public domain.
|