如何以utc格式返回时间(2014-06-01T12:00:00Z)。我阅读了有关日历模块的文档,但没有解释如何生成这样的时间格式。我的程序应该在不同的时区工作,所以请给我建议。
答案 0 :(得分:2)
Erlang Central页面Converting Between struct:time and ISO8601 Format有这个例子:
不幸的是,没有Erlang库提供此功能。幸运的是,即使在ISO-8601格式下,原生的Erlang日期和时间格式也非常容易格式化以便显示或传输:
@GET @Path("/export-report") @Produces(MediaType.APPLICATION_OCTET_STREAM) //@Produces({ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }) public Response exportReport() throws IOException { byte[] fileBytes = getFileBytes(); String filename = "report.xslx"; String mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; return Response.ok() .header("Content-Disposition", "attachment; filename=\"" + filename + "\"") .header("Content-Length", fileBytes.length) .entity(fileBytes) .header("Content-Type", mimeType) .build(); }
使用上述模块:
-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] )).
要以UTC格式输出时间,只需将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
的返回值传递给erlang:universaltime()
。