假设我们希望计算两个时间戳之间的差异:
66> T0=now().
{1387,611376,335905}
67> T1=now().
{1387,611383,156575}
68> T1-T0.
** exception error: an error occurred when evaluating an arithmetic expression
in operator -/2
called as {1387,611383,156575} - {1387,611376,335905}
69> {A1,A2,A3}=T0.
{1387,611376,335905}
70> {B1,B2,B3}=T1.
{1387,611383,156575}
71> Diff=(B1-A1)*1000000000000+(B2-A2)*1000000+(B3-A3).
6820670
72>
除了减去每个相应的元素之外,还有一种更有效(优雅)的方法吗?
感谢。
答案 0 :(得分:2)
不,没有更有效的方法。主要参见stdlib
中实施timer:now_diff/2
的相同方式:
%%
%% Calculate the time difference (in microseconds) of two
%% erlang:now() timestamps, T2-T1.
%%
-spec now_diff(T2, T1) -> Tdiff when
T1 :: erlang:timestamp(),
T2 :: erlang:timestamp(),
Tdiff :: integer().
now_diff({A2, B2, C2}, {A1, B1, C1}) ->
((A2-A1)*1000000 + B2-B1)*1000000 + C2-C1.
答案 1 :(得分:1)
如果您只需要比较:
1> {1387,611383,156575} > {1387,611376,335905}.
true