如何在Erlang中验证日期和时间?

avwztpqn  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(152)

我如何验证今天是工作日,并且当前时间在两个时间之间?我尝试了下面的代码,但我只能检查时间之后或之前。

is_past_15() ->
  {_, {Hour, _, _}} = calendar:local_time(),
  Hour >= 15.
1cklez4t

1cklez4t1#

验证今天是工作日

-module(a).
-compile(export_all).

is_business_day(Date) ->
    calendar:day_of_the_week(Date) =< 5.

在 shell 中:

7> c(a).                   
a.erl:2:2: Warning: export_all flag enabled - all functions will be exported
%    2| -compile(export_all).
%     |  ^

{ok,a}

8> {Date, _} = calendar:local_time().

9> a:is_business_day(Date).
true

当前时间也在两个时间之间。

-module(a).
-compile(export_all).

is_between(BeginDT, EndDT, DT) ->
    BeginSecs = calendar:datetime_to_gregorian_seconds(BeginDT),
    EndSecs = calendar:datetime_to_gregorian_seconds(EndDT),
    DTSecs = calendar:datetime_to_gregorian_seconds(DT),
    (BeginSecs =< DTSecs) and (DTSecs =< EndSecs).

在 shell 中:

13> BeginDT = {{2021, 1, 20}, {10, 15, 0}}.  %% 1/20/21 10:15:00 AM
{{2021,1,20},{10,15,0}}

14> EndDT = {{2021, 1, 20}, {10, 20, 0}}.  %% 1/20/2021 10:20:00 AM
{{2021,1,20},{10,20,0}}

15> DT = {{2021, 1, 20}, {10, 17, 0}}.  %% 1/20/2021 10:17:00 Am
{{2021,1,20},{10,17,0}}

16> a:is_between(BeginDT, EndDT, DT).
true

相关问题