erlang—utc格式的返回时间

erlang—utc格式的返回时间,erlang,Erlang,如何以格式返回时间(2014-06-01T12:00:00Z)。我阅读了关于日历模块的文档,但并没有解释如何生成这样的时间格式。我的程序应该在不同的时区工作,所以请给我一些建议。Erlang中央页面有以下示例: 不幸的是,没有Erlang库提供此功能。幸运的是,本机Erlang日期和时间格式非常容易格式化以进行显示或传输,即使是ISO-8601格式: -module(iso_fmt). -export([iso_8601_fmt/1]). iso_8601_fmt(DateTime) ->

如何以格式返回时间(2014-06-01T12:00:00Z)。我阅读了关于日历模块的文档,但并没有解释如何生成这样的时间格式。我的程序应该在不同的时区工作,所以请给我一些建议。

Erlang中央页面有以下示例:

不幸的是,没有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\u fmt:iso\u 8601\u fmt(erlang:localtime())]。这张照片打印的是ok和2004-08-2801:48:48。我正在用二进制转换时间,所以我不希望resultok中的ok是io:fwrite()函数的返回值。在erlang中,所有函数都有一个返回值。您在shell中看到它的事实只是因为io:fwrite是测试用例中的最后一个函数。但是,如果您需要获得结果以进行转换,则必须使用io_lib:fwrite()返回字符串,而不是打印并返回ok。