我想将本地时间作为字符串返回,但前导零。我试过这个:
{{Year, Month, Day}, {Hour, Minute, Second}} = erlang:localtime().
DateAsString = io_lib:format("~2.10.0B~2.10.0B~4.10.0B~2.10.0B~2.10.0B~2.10.0B",
[Month, Day, Year, Hour, Minute, Second]).
但如果某些组件是一位数,则返回的字符串为:
[["0",57],"29","2011","17","33","34"]
当前月9
打印为["0",57]
。
请帮忙。
谢谢。
答案 0 :(得分:6)
尝试:
1> lists:flatten([["0",57],"29","2011","17","33","34"]).
"09292011173334"
io_lib:format/2
(和它的同伴io:format/2
)实际上返回一个深IO列表。这样的列表是可打印的,可以在套接字上发送,也可以像扁平字符串一样写入文件,但生成效率更高。扁平化通常是无用的,因为在所有情况下,字符串将被打印或输出到文件/套接字,它将自动被Erlang展平。
答案 1 :(得分:3)
你想要使用这样的东西:
DateAsString = io_lib:format("~2..0w~2..0w~4..0w~2..0w~2..0w~2..0w",
[Month, Day, Year, Hour, Minute, Second]).
更常见的w
格式修饰符在这里做正确的事情,使用base等等,因此不需要使用更复杂的B
修饰符。 2..0
表示“2个字符宽,零填充,未指定精度。”我们这里不需要精度,因为我们处理的是整数。