now() -> now_to_tz
Pierpaolo BERNARDI
bernardp@REDACTED
Thu Feb 27 17:45:53 CET 2003
From: "Per Hedeland" <per@REDACTED>
> Anastasia Gornostaeva <ermine@REDACTED> wrote:
> >
> >How can I convert time now() to time using appropriate TZ?
> >I found only calendar:now_to_local(), but I want convert to other time
zones.
>
> This is actually not entirely trivial to do inside or outside Erlang,
> since there are no "explicit" ANSI/POSIX/Unix interfaces to get that
> info: The existing interfaces deal only with local time and GMT/UTC,
> obtaining the mapping between them by means of some system-specific
> config file such as /etc/localtime and/or the TZ environment variable.
Perhaps I'm misunderstanding the question, but why not the following:
local_tz() ->
UT = calendar:universal_time(),
LT = calendar:universal_time_to_local_time(UT),
(calendar:datetime_to_gregorian_seconds(LT) -
calendar:datetime_to_gregorian_seconds(UT)).
now_to_local_time_tz({Mega,Sec,Micro},TZ) ->
TZSec = TZ * 3600 - local_tz(),
calendar:now_to_local_time({Mega,Sec+TZSec,Micro}).
----------
47> calendar:now_to_local_time(now()).
{{2003,2,27},{17,35,57}}
48> tz:now_to_local_time_tz(now(),0).
{{2003,2,27},{16,36,8}}
49> tz:now_to_local_time_tz(now(),4).
{{2003,2,27},{20,36,12}}
50> tz:now_to_local_time_tz(now(),-5).
{{2003,2,27},{11,36,18}}
P.
More information about the erlang-questions
mailing list