Erlang Central

Converting Between struct:time and ISO8601 Format

Revision as of 17:44, 21 November 2006 by RJ (Talk | contribs)

Problem

You have an application that requires you to use ISO-8601 Format for input and output.

Solution

Unfortunately, no Erlang libraries provide this functionality. Luckily, the native Erlang date and time formats are very easy to format for display or transmission, even in ISO-8061 format:

iso_8601_fmt(DateTime) ->
    {{Year,Month,Day},{Hour,Min,Sec}} = DateTime,
    io_lib:format("~4.10.0B-~2.10.0B-~2.10.0B ~2.10.0B:~2.10.0B:~2.10.0B",
        [Year, Month, Day, Hour, Min, Sec]).

1> CurrDateTime = erlang:localtime().
{{2004,8,28},{1,19,37}}
2> {{Year,Month,Day},{Hour,Min,Sec}} = CurrDateTime.
{{2004,8,28},{1,19,37}}
3> io:fwrite("~s\n",[iso_8601_fmt(erlang:localtime())]).
2004-08-28 01:48:48

However, if you're writing a web application, you may need to observe the W3C profile for time formats, which is slightly different. See the TimeRFC1123 Recipe for details:

The nice thing about the W3C profile of the ISO 8601 format is that it's very easy to sort dates using a simple string compare.


Online casino games. play casino games strategy online casino Online Casino - Choosing the best casinos. online casino gamble slots tips online casino games diamond club slots online casino net best casinos online