[erlang-questions] Time zone

Scott Lystig Fritchie <>
Thu Dec 14 00:19:41 CET 2006

>>>>> "cm" == Chandru  <> writes:

cm> Basically offset from GMT was what I was after. I'm writing a web
cm> server and I had to print out access logs in the Common Log
cm> Format.

Hrm.  I don't know how well this would work on a Windows box, but this
off-the-top-of-my-head-may-not-compile-cleanly code could be the Hack
Behind Door #2?  Using a real "port" would avoid repeated fork() and
exec() overhead.  Incorrectness, for some fraction of a second, may or
may not bother your app.

Come to think of it, if both fork+exec overhead and the Yaws version's
repeated arithmetic overhead are too high ... the current_offset()
func below could use the Yaws method instead of os:cmd/1.  I haven't
measured how frequently the Yaws version needs to be called in order
to break even.  :-)

Though, if you're seriously trying to optimize your Yaws app, timezone
calculations are probably very low on the list of inefficiencies to
attack first....


--- snip --- snip --- snip --- snip --- snip --- snip --- snip ---

start_offset_server() ->
    spawn_link(fun() -> offset_server() end);

    offset_server ! {self(), current_offset},
	{offset_server, Offset} -> Offset

offset_server() ->
    register(offset_server, self()),
    {ok, _} = timer:send_interval(1000, check_offset),

offset_server(Offset) ->
	check_offset ->
        {Pid, current_offset} ->
	    Pid ! {offset_server, Offset},

current_offset() ->
    os:cmd("date +%z").		% Removal of trailing \n exercise for reader

More information about the erlang-questions mailing list