Converting Between struct:time and ISO8601 Format

From Erlang Community

(Difference between revisions)
Revision as of 02:10, 30 August 2006 (edit)
213.171.204.166 (Talk)

← Previous diff
Current revision (06:38, 9 March 2007) (edit) (undo)
Bfulgham (Talk | contribs)
(Solution)
 
(5 intermediate revisions not shown.)
Line 19: Line 19:
</code> </code>
-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:+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 [[RFC1123_Dates_and_Times]] 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. 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.
 +
 +[[Category:CookBook]][[Category:DateTimeRecipes]]

Current revision

[edit] Problem

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

[edit] 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 RFC1123_Dates_and_Times 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.

Erlang/OTP Projects
Personal tools