erlang
  • tsung
  • erlang-escript
  • 2015-12-09 50 views 0 likes 
    0

    在宗,我想發佈消息時間milisec,我嘗試了下面,但只能在秒。在宗,我怎樣才能以milisec獲得發佈消息時間?

    <setdynvars sourcetype="eval" code='fun({Pid,DynVars})-> 
    {{Year,Month,Day},{Hour,Minute,Second}} = erlang:localtime(), 
    io_lib:format(&apos;~4..0B-~2..0B-~2..0B::~2..0B:~2..0B:~4..0B\n&apos;, [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> 
    

    回答

    0

    可以使用

    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是秒1 1 1 0 0 0和1970年1 1 0 0 0

    票據之間的數量: system_time不是單調的,如果你需要這個特性,你可以使用erlang:monotonic_time/1,但是在這種情況下你不能轉換爲日期或者在不同節點之間進行比較。

    +0

    感謝它的工作。我也嘗試使用erlang:system_time(milli_seconds),但爲此我們需要構建最新的erlang/otp。 – Deepak10

    相關問題