如何比较erlang中的两个小时?

如何比较erlang中的两个小时?,erlang,Erlang,在erlang比较两个小时的方法是什么?情况如下:, 我有执行交易撤销的时间限制,例如:30分钟,如果 交易被撤销的时间是30多分钟前 不应允许交易被撤销。但我需要能够 比较小时数(从我要还原的事务到现在的小时数) 我找不到任何比较小时数的erlang函数,有人能帮我吗 LocalTime = calendar:local_time() {{2017,11,7},{9,43,32}} TransactionToRevertTime = {{2017,11,7},{9,23,36}} 从: “使

在erlang比较两个小时的方法是什么?情况如下:, 我有执行交易撤销的时间限制,例如:30分钟,如果 交易被撤销的时间是30多分钟前 不应允许交易被撤销。但我需要能够 比较小时数(从我要还原的事务到现在的小时数) 我找不到任何比较小时数的erlang函数,有人能帮我吗

LocalTime = calendar:local_time()
{{2017,11,7},{9,43,32}}
TransactionToRevertTime = {{2017,11,7},{9,23,36}}
从:

“使用
erlang:monotonic_time/0
获取时间戳,并使用普通减法计算时间差”

在两次调用单调时间(秒)之间取一个差值,如果差值大于1800,则超过30分钟。

来自:

“使用
erlang:monotonic_time/0
获取时间戳,并使用普通减法计算时间差”


在两次调用单调时间(秒)之间取一个差值,如果差值大于1800,则超过30分钟。

您可以使用
日历:日期时间到公历秒/1
将两个日期时间转换为整数,减去它们,并检查其差值是否大于
30*60

1> A = {{2017,11,7},{9,43,32}}.
{{2017,11,7},{9,43,32}}
2> B = {{2017,11,7},{9,23,36}}.
{{2017,11,7},{9,23,36}}
3> C = {{2017,11,7},{9,0,36}}.
{{2017,11,7},{9,0,36}}
4> A1 = calendar:datetime_to_gregorian_seconds(A).
63677267012
5> B1 = calendar:datetime_to_gregorian_seconds(B).
63677265816
6> C1 = calendar:datetime_to_gregorian_seconds(C).
63677264436
7> A1 - B1 > 30 * 60.
false
8> A1 - C1 > 30 * 60.
true

如果A是现在,B是30分钟之前,而C是30分钟之前。

您可以使用
日历:datetime\u to\u gregorian\u seconds/1
将两个datetime转换为整数,减去它们,并检查它们的差值是否大于
30*60

1> A = {{2017,11,7},{9,43,32}}.
{{2017,11,7},{9,43,32}}
2> B = {{2017,11,7},{9,23,36}}.
{{2017,11,7},{9,23,36}}
3> C = {{2017,11,7},{9,0,36}}.
{{2017,11,7},{9,0,36}}
4> A1 = calendar:datetime_to_gregorian_seconds(A).
63677267012
5> B1 = calendar:datetime_to_gregorian_seconds(B).
63677265816
6> C1 = calendar:datetime_to_gregorian_seconds(C).
63677264436
7> A1 - B1 > 30 * 60.
false
8> A1 - C1 > 30 * 60.
true

如果A现在是,B不到30分钟前,而C超过30分钟前。

最好使用
单调时间/1
,并与
1800
进行比较,而不是依赖本机时间单位值(不能保证为纳秒)。谢谢@Dogbert,我已经更新了答案以反映您的评论。谢谢,但我使用了Dogbert方法,他的解释更清楚,我是erlang的新手,他的解决方案是我更清楚看到的。可能最好使用
单调时间/1
,并与
1800
进行比较,而不是依赖本机时间单位值(这不能保证是纳秒级的)。谢谢@Dogbert,我已经更新了答案以反映您的评论。谢谢,但我使用Dogbert的方式,他的解释更清楚,我是erlang的新手,他的解决方案我看得更清楚。非常感谢您的帮助Dogbert非常感谢您的帮助Dogbert