3.6 KiB
qdate - A Wrapper for Erlang Date/Time Management
Purpose
Erlang Date and Time management is rather primitive, but improving.
dh_date, of which ec_date
in
erlware_commons is a huge step
towards formatting and parsing dates in a way that compares nicely with PHP's
date and
strtotime functions.
Unfortunately, ec_date
doesn't deal with timezones, but conveniently,
the project erlang_localtime
does.
It is the express purpose of this qdate
package to bring together the
benefits of ec_date
and erlang_localtime
, as well as extending the
capabilities of both to provide for other needed tools found in a single
module.
qdate
will provide, under the roof of a single module date and time formatting
and parsing from and into:
- Formatting Strings
- Erlang Date Format
- Erlang Now Format
- Unixtime integers
All while doing so by allowing you to either set a timezone by some arbitrary key or by using the current process's Pid is the key.
Further, while ec_date
doesn't support PHP's timezone characters (e, I, O, P,
and T, Z), qdate
will handle them for us.
Exported Functions:
Conversion Functions
to_string(FormatString, Date)
- "FormatString" is a string that follows thedate
function formatting rules.Date
is any date, in almost any common formatto_string(FormatString)
- Formats the current timeto_date(Date)
- converts any date/time format to Erlang date format.to_now(Date)
- converts any date/time format to Erlang now format.to_unixtime(Date)
- converts any date/time format to a unixtime integer
Conversion Functions provided for API compatibility with ec_date
parse/1
- Same asto_date(Date)
nparse/1
- Same asto_now(Date)
format/1
- Same asto_string/1
format/2
- Same asto_string/2
Timezone Functions
set_timezone(Key, TZ)
- Set the timezone to TZ for the keyKey
set_timezone(TZ)
- Sets the timezone, and uses the Pid fromself()
as theKey
. Also links the process for removal from the record when the Pid dies.get_timezone(Key)
- Gets the timezone assigned toKey
get_timezone()
- Gets the timezone usingself()
as theKey
clear_timezone(Key)
- Removes the timezone record associated withKey
.clear_timezone()
- Removes the timezone record usingself()
asKey
. This function is not necessary for cleanup, most of the time, since ifKey
is a Pid, theqdate
server will automatically clean up when the Pid dies.
Note: If no timezone is set, then anything relying on the timezone will default to GMT.
Example:
Calling qdate:format
will allow single-line re-encoding of a date.
Say we wanted to convert the date and time from "12/31/2013 8:15pm" to something like "2013-12-31 (16:15:00)":
Using just ec_date
, you would do it like this:
OldDate = "12/31/2013 8:15pm",
Date = ec_date:parse(OldDate),
NewString = ec_date:format("Y-m-d (H:i:s)",Date).
With the new method, you could do it simply and clearly with one line:
NewString = qdate:format("Y-m-d (H:i:s)",OldDate).
The nice thing about it this though, is that OldDate can be any date format, and it will figure it out. It can be any of the following:
- Erlang Date Format:
{{Y,M,D},{H,M,S}}
- Erlang Now Format:
{MegaSecs, Secs, MicroSecs}
- Date String:
"2013-12-31 08:15pm"
- Integer Unix Timestamp: 1388448000