Convert Epoch Seconds to DMYHMS
From Erlang Community
(Difference between revisions)
| Revision as of 12:51, 24 September 2006 (edit) Ayrnieu (Talk | contribs) m (typo) ← Previous diff |
Revision as of 13:29, 24 September 2006 (edit) (undo) Ayrnieu (Talk | contribs) (would this be preferable?) Next diff → |
||
| Line 13: | Line 13: | ||
| 3> {{Year, Month, Day}, {Hour, Min, Sec}} = DateTime. | 3> {{Year, Month, Day}, {Hour, Min, Sec}} = DateTime. | ||
| {{34,4,26},{23,34,18}} | {{34,4,26},{23,34,18}} | ||
| - | 4> io:fwrite("Today's Date is ~2B/~2B/~ | + | 4> io:fwrite("Today's Date is ~2B/~2B/~4..0B ~2B:~2.10.0B:~2.10.0B\n", |
| 4> [Month, Day, Year, Hour, Min, Sec]). | 4> [Month, Day, Year, Hour, Min, Sec]). | ||
| - | Today's Date is 4/26/ | + | Today's Date is 4/26/0034 23:34:18 |
| ok | ok | ||
| </code> | </code> | ||
Revision as of 13:29, 24 September 2006
Problem
You have a date and time in Erlang Epoch seconds (i.e., Gregorian calendar year 0 seconds), and you want to calculate the individual DMYHMS values from it.
Solution
In recipe TimeToday we did exactly this but only for the current date. How about if we wanted to get the date, and time (DMYHMS) associated to a particular number of seconds? Once more we would use gre.
1> Seconds = 1083022458.
1083022458
2> DateTime = calendar:gregorian_seconds_to_datetime(Seconds).
{{34,4,26},{23,34,18}}
3> {{Year, Month, Day}, {Hour, Min, Sec}} = DateTime.
{{34,4,26},{23,34,18}}
4> io:fwrite("Today's Date is ~2B/~2B/~4..0B ~2B:~2.10.0B:~2.10.0B\n",
4> [Month, Day, Year, Hour, Min, Sec]).
Today's Date is 4/26/0034 23:34:18
ok
|
In recipe TimeToday we discussed how to convert a date structure to a string. Convert in the opposite direction is also possible, and useful. Unfortunately, there is not a lot of built-in Erlang plumbing to do so. However, if we are very sure of the format we can easily extract the data we need using Erlang's ever-helpful io and io_lib modules:
5> Some_Date_String = "2004-04-26T18:26:18-0500".
"2004-04-26T18:26:18-0500".
6> {ok, [YYY,MMM,DD,HH,MM,SS,ZZ],_} =
6> io_lib:fread("~4d-~2d-~2dT~2d:~2d:~2d-~4d", Some_Date_String).
{ok,[2004,4,26,18,26,18,500],[]}
|

Digg It
Del.icio.us
Reddit
Facebook
Stumble Upon
Technorati

