在 Tsung 中,如何获得以毫秒为单位的发布消息时间?
In Tsung, how can I get publish message time in milisec?
在 Tsung 中,我想以毫秒为单位发布消息时间,我尝试了以下但只能在秒中获得时间。
<setdynvars sourcetype="eval" code='fun({Pid,DynVars})->
{{Year,Month,Day},{Hour,Minute,Second}} = erlang:localtime(),
io_lib:format('~4..0B-~2..0B-~2..0B::~2..0B:~2..0B:~4..0B\n', [Year,Month,Day,Hour,Minute,Second]) end.'>
<var name="time" />
</setdynvars>
<request subst="true">
<mqtt type="publish" topic="xxx" qos="0" retained="true">%%_time%%</mqtt>
</request>
你可以使用
1> Time_milli = fun() ->
Um = erlang:system_time(milli_seconds),
{D,T} = calendar:gregorian_seconds_to_datetime(Um div 1000 + 719528*86400)
{D,T,Um rem 1000}
end.
#Fun<erl_eval.20.54118792>
2> Time_milli().
{{2015,12,9},{8,13,53},40}
值 719528*86400
是 0 0 0 时的 1 1 1 和 0 0 0 时的 1970 1 1 之间的秒数。
注意:system_time不是单调的,如果你需要这个特性你可以使用erlang:monotonic_time/1,但在这种情况下你不能转换为日期或在不同节点之间进行比较。
在 Tsung 中,我想以毫秒为单位发布消息时间,我尝试了以下但只能在秒中获得时间。
<setdynvars sourcetype="eval" code='fun({Pid,DynVars})->
{{Year,Month,Day},{Hour,Minute,Second}} = erlang:localtime(),
io_lib:format('~4..0B-~2..0B-~2..0B::~2..0B:~2..0B:~4..0B\n', [Year,Month,Day,Hour,Minute,Second]) end.'>
<var name="time" />
</setdynvars>
<request subst="true">
<mqtt type="publish" topic="xxx" qos="0" retained="true">%%_time%%</mqtt>
</request>
你可以使用
1> Time_milli = fun() ->
Um = erlang:system_time(milli_seconds),
{D,T} = calendar:gregorian_seconds_to_datetime(Um div 1000 + 719528*86400)
{D,T,Um rem 1000}
end.
#Fun<erl_eval.20.54118792>
2> Time_milli().
{{2015,12,9},{8,13,53},40}
值 719528*86400
是 0 0 0 时的 1 1 1 和 0 0 0 时的 1970 1 1 之间的秒数。
注意:system_time不是单调的,如果你需要这个特性你可以使用erlang:monotonic_time/1,但在这种情况下你不能转换为日期或在不同节点之间进行比较。