[erlang-questions] calendar now_to_universal_time/1 vs. universal_time/0

Nicholas Frechette <>
Mon Sep 27 21:35:22 CEST 2010


While we are on the subject, I am in possession of a rare laptop. The
motherboard is bad and while the computer is fully functional, the clock
sometimes goes backwards (when running as well as when booting, or waking up
from hibernation/sleep). I'm 100% positive it isn't a battery problem.
If the clock goes backwards, could this affect adversely a running erlang
application? You mentionned timers could get affected and erlang:now()?
It can sometime reverse by a few minutes, sometimes hours... and one time it
reversed several years (years before the physical manufacture of the
laptop...).
I've never really noticed bad behavior from winxp or ubuntu running on it
aside from the few times where the time difference was so big, weird things
would happen in respect with synchronization of applications.
Now obviously I'm not running anything mission critical on that time
traveling laptop but it would be nice to know the expected behavior for when
I'm doing development work on it.

On Mon, Sep 27, 2010 at 3:15 PM, Ryan Zezeski <> wrote:

> On Mon, Sep 27, 2010 at 1:00 PM, Ulf Wiger
> <>wrote:
>
> >
> > On 27 Sep 2010, at 18:25, Pierpaolo Bernardi wrote:
> >
> > > On Mon, Sep 27, 2010 at 18:21, Ryan Zezeski <>
> wrote:
> > >
> > >> This is, essentially, the question I'm asking.  Should I prefer one
> over
> > the
> > >> other for *any* reason?  Right now, I prefer universal_time because
> it's
> > >> less typing :)
> > >
> > > A perfectly good reason.  It's also a tiny bit clearer.
> >
> > erlang:now() is actually a bit different from the calendar clock.
> > It can, by definition, never jump backwards.
> >
> > It will also attempt not to make large adjustments of any kind, so if it
> > detects
> > that there is a large difference between the system clock and the
> > erlang:now()
> > clock, the now() clock will speed up or slow down 1% in order to converge
> > with the actual time, without disturbing timeouts etc. which rely on
> now()
> > to
> > provide a smooth representation of system real-time.
> >
> > In other words, erlang:universal_time/0 will return the actual time,
> > whereas
> > erlang:now() may, under certain circumstances, differ quite significantly
> > from actual time.
> >
> >
> Thanks Ulf, but I was actually referring to calendar:universal_time/0.  I
> did not know of the existence of erlang:universtaltime/0 until you pointed
> it out just now.  Now I'm curious, what is the difference, if any, between
> these two?  Is their existence just a case of history?
>
> Another question, both functions claim that they return UTC "if available"
> otherwise they return local time.  In what case is UTC not available?
>
> -Ryan
>


More information about the erlang-questions mailing list