erlang 如何用微秒获取时间
erlang how to get time with microsecond
我正在尝试获取以下格式的时间“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.
然而,当我调用这个函数时 returns 是这样的:“2015-04-13T17:37:46.***Z”
它在微秒的位置显示 *(星号)。我做错了什么?
根据io manual 如果指定的字段宽度太小,那么整个字段将被*字符填充。对于微秒,字段宽度指定为 3,但它可以是 6 位数字,这会导致 *.
您可以将微秒转换为字符串,如果少于 3 位数字,则使用前 3 个带前导 0 的字符。
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)])).
您要求打印只有 3 位数字的微秒,而它需要打印 6 位(通常)。
我正在尝试获取以下格式的时间“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.
然而,当我调用这个函数时 returns 是这样的:“2015-04-13T17:37:46.***Z” 它在微秒的位置显示 *(星号)。我做错了什么?
根据io manual 如果指定的字段宽度太小,那么整个字段将被*字符填充。对于微秒,字段宽度指定为 3,但它可以是 6 位数字,这会导致 *.
您可以将微秒转换为字符串,如果少于 3 位数字,则使用前 3 个带前导 0 的字符。
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)])).
您要求打印只有 3 位数字的微秒,而它需要打印 6 位(通常)。