在erlang中比较两个小时的方法是什么?案例如下, 我有一个时间限制来执行交易逆转,例如:30分钟,如果 交易的时间超过30分钟前我 不应该允许交易被撤销。但我需要能够 比较小时数(从我要恢复的交易和现在的小时) 而且我找不到比较小时的任何erlang功能,有人可以帮助我吗?
LocalTime = calendar:local_time()
{{2017,11,7},{9,43,32}}
TransactionToRevertTime = {{2017,11,7},{9,23,36}}
答案 0 :(得分:2)
您可以使用calendar:datetime_to_gregorian_seconds/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分钟前。
答案 1 :(得分:1)
来自Erlang Docs:
“使用erlang:monotonic_time/0
记下时间戳,并使用普通减法计算时差”
对monotonic_time(second)
的两次调用进行区分,如果差异超过1800,则超过30分钟。