Как вернуть время в utc формате (2014-06-01T12: 00: 00Z). Я читал документы о модуле календаря, но не было объяснений, как создать формат времени, подобный этому. Моя программа должна работать в разных часовых поясах, поэтому, пожалуйста, дайте мне советы.erlang - время возврата в utc формате
0
A
ответ
1
Центральная страница Erlang Converting Between struct:time and ISO8601 Format имеет следующий пример:
К сожалению, нет библиотек Erlang не предоставлять эту функциональность. К счастью, туземные дата и время Erlang форматы очень легко форматировать для показа или передачи, даже в формате ISO-8601:
-module(iso_fmt). -export([iso_8601_fmt/1]). 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]). format_iso8601() -> {{Year, Month, Day}, {Hour, Min, Sec}} = calendar:universal_time(), iolist_to_binary( io_lib:format( "~.4.0w-~.2.0w-~.2.0wT~.2.0w:~.2.0w:~.2.0wZ", [Year, Month, Day, Hour, Min, Sec])).
Используя вышеупомянутый модуль:
1> {{Year,Month,Day},{Hour,Min,Sec}} = erlang:localtime(). {{2004,8,28},{1,19,37}} 2> io:fwrite("~s\n",[iso_fmt:iso_8601_fmt(erlang:localtime())]). 2004-08-28 01:48:48
Чтобы сделать это время вывода в UTC, просто передайте ему возвращаемое значение erlang:universaltime()
вместо erlang:localtime()
.
большое спасибо –
io: fwrite ("~ s \ n", [iso_fmt: iso_8601_fmt (erlang: localtime())]). это печатает нормально и 2004-08-28 01:48:48. я конвертирую время в двоичном формате, поэтому я не хочу ok в моем результате –
ok - это возвращаемое значение io: fwrite ([link] (http://erlang.org/doc/man/io.html#fwrite- 2)). В erlang все функции имеют возвращаемое значение. Тот факт, что вы видите его в оболочке, просто потому, что io: fwrite является последней функцией в вашем тестовом примере. Но если вам нужно получить результат для его преобразования, вы должны использовать io_lib: fwrite ([link] (http://erlang.org/doc/man/io_lib.html#fwrite-2)), которые возвращают string, а напечатайте его и верните ok. – Pascal