[erlang-questions] Newbie question: wait until an absolute time

Per Hedeland per@REDACTED
Fri Feb 1 16:07:04 CET 2008


Alpár Jüttner <alpar@REDACTED> wrote:
>
>Is there any simple way in erlang to wait until a certain absolute time
>or to do something at a specific time in the future ? Namely, I'm
>looking for the absolute counterpart of the functions sleep(),
>send_after(), apply_after() and the 'after TimeOut ->'.
>
>Is it there anything like the opposite of  now_to_universal_time(Now)?
>
>Anyway, is there any easy way to use a larger timeout than it is
>representable by a single integer?

Others have already explained why you probably don't want to do it this
way unless the future is "pretty near", but to answer the question
without regard for that:

1> Now = calendar:local_time().
{{2008,2,1},{15,53,6}}
2> Future = {{2134,5,6},{17,42,0}}.
{{2134,5,6},{17,42,0}}
3> Seconds = calendar:datetime_to_gregorian_seconds(Future) - calendar:datetime_to_gregorian_seconds(Now).
3984342534
4> timer:send_after(1000*Seconds, "Wake up!").
{ok,{5186220328800266,#Ref<0.0.0.40>}}

(The timer module doesn't have the limit of 'receive after'.)

--Per Hedeland



More information about the erlang-questions mailing list