我试图按照以下格式获取时间“2015-04-13T17:37:46.456Z”
我正在使用以下功能来获取它:
get_time({_,_,Micro} = Timestamp) ->
{{Year, Month, Day}, {Hour, Minute, Second}} = calendar:now_to_datetime(Timestamp),
StrTime = lists:flatten(io_lib:format("~4..0w-~2..0w-~2..0wT~2..0w:~2..0w:~2..0w.~3..0wZ",[Year,Month,Day,Hour,Minute,Second,Micro])),
StrTime.
但是,当我调用此函数时,它会返回如下内容:“2015-04-13T17:37:46。*** Z” 它在微秒的位置显示*(星号)。我做错了什么?
答案 0 :(得分:2)
根据io manual如果指定的字段宽度太小,则整个字段将填充*字符。对于微秒,字段宽度被指定为3但它可以是6位数,这导致*。
您可以将微秒转换为字符串,然后使用前3个字符,前导0(如果少于3位)。
lists:flatten(io_lib:format("~4..0w-~2..0w-~2..0wT~2..0w:~2..0w:~2..0w.~3..0sZ",
[Year, Month, Day, Hour, Minute, Second, integer_to_list(Micro)])).
答案 1 :(得分:1)
要求打印微秒钟只需要3位数,同时需要打印6个(一般)。