Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Apr 2002 11:23:30 +0100
From:      Brian Somers <brian@freebsd-services.com>
To:        Sean Chittenden <sean@chittenden.org>
Cc:        Brian Somers <brian@freebsd-services.com>, freebsd-standards@FreeBSD.org
Subject:   Re: mktime() doesn't fix deadzones... 
Message-ID:  <200204111023.g3BANUOF032971@hak.lan.Awfulhak.org>
In-Reply-To: Message from Sean Chittenden <sean@chittenden.org>  of "Wed, 10 Apr 2002 12:54:09 PDT." <20020410125409.B34587@ninja1.internal> 

next in thread | previous in thread | raw e-mail | index | archive | help
> [please trim current@ from the CC list on reply]
> 
> > IMHO the SQL code you quote in the PR should fail with an ``invalid
> > time'' error.
> 
> There's some truth to that...  but Apr 7th 2am -8:00 isn't an invalid
> datetime.  It isn't correct, Apr 7th 3am -7:00 is the correct time,
> but they're identical because UNIX time never sees any of these
> kludgey timezone problems.

I think that ``Apr 7th 2am PST'' and ``Apr 7th 2am PDT'' are both 
invalid times.  The PDT/PST bit suggests that they've already been 
``normalised''.

> > Personally I like the fact that mktime() returns -1 - it allows
> > date's -v option to act sanely, although I must admit it was a PITA
> > to get right.
> 
> I like that mktime() returns -1 for invalid times, but I don't think
> Apr 7th @2am-8 is an invalid time.  Not correct, but not invalid
> either.
> 
> > The really big question is, how can you ``fix'' mktime() ?
> 
> For now, tm->tm_hour +=3D 1 is a reasonable solution, IMHO.  From the
> testing done by the PostgreSQL folks, I gather that most other *NIX's
> automatically account for this border condition and change the passed
> in time structure.
> 
> The alternative seems to me would be to have it return -1 on 2am and
> then leave it up to the application writer to detect this and attempt
> a 2nd call w/ tm->tm_hour incremented.  The only caveat to that being
> that I'm not sure if all daylight savings shifts are 60min.

I believe there are other shifts.  AFAIR wollman told me that in an 
email a few years ago.

In the date -v case, this is dealt with more sensibly than if mktime() 
just added an hour.

> Last thing to think about in favor of having mktime() handle this,
> October 40th automatically gets changed to November 9th already.
> Having mktime() adjust things for timezones as well as dates doesn't
> seem too unreasonable.

If mktime() adjusts the passed date, it makes it difficult for 
applications to deal with it - When I say 2:30, and that falls in a 
2:00 - 3:00 gap, do I mean 1:30, 3:30, 1:59 or 3:00 ?  This really 
depends on the application.

[.....]
-- 
Brian <brian@freebsd-services.com>                <brian@Awfulhak.org>
      http://www.freebsd-services.com/        <brian@[uk.]FreeBSD.org>
Don't _EVER_ lose your sense of humour !      <brian@[uk.]OpenBSD.org>



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-standards" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204111023.g3BANUOF032971>