Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 May 1998 13:12:31 PDT
From:      "Marty Leisner" <leisner@sdsp.mc.xerox.com>
To:        Cliff Addy <fbsdlist@federation.addy.com>
Cc:        questions@FreeBSD.ORG
Subject:   Re: Year 2038 or 2106? 
Message-ID:  <9805182012.AA12715@gnu.sdsp.mc.xerox.com>
In-Reply-To: Your message of "Mon, 18 May 1998 10:47:00 PDT." <Pine.BSF.3.95q.980518133734.23393A-100000@federation.addy.com> 

next in thread | previous in thread | raw e-mail | index | archive | help

In message <Pine.BSF.3.95q.980518133734.23393A-100000@federation.addy.com>,   y
ou write:
>I'd always read that fbsd was good until at least 2038, as far as
>date/time computations, since the time is stored as a 32-bit integer of
>seconds since the Jan 1, 1970. 
>
>Just on a whim, I decided to check this.  I took 2^32/60/60/24/365 and
>added that to 1970.  Now, I know I didn't account for leap years, but I
>still come out to the 2106, not 2038.  I always assumed that an *unsigned*
>integer was used, if I use a signed integer I get 2^31/60/60/24/365 plus
>1970 which *does* yield 2038. 
>
>So, I guess my questions are:  Is the date an unsigned or signed integer? 
>If signed, why?  If unsigned, why isn't the "date of death" 2106?  Or did
>I just completely misunderstand or miscalculate? 
>
>Too much time on my hands ...
>
>Cliff
>
>
Probably because -1 is an error value:
>From glibc:
 - Function: time_t time (time_t *RESULT)
     The `time' function returns the current time as a value of type
     `time_t'.  If the argument RESULT is not a null pointer, the time
     value is also stored in `*RESULT'.  If the calendar time is not
     available, the value `(time_t)(-1)' is returned.


 - Data Type: time_t
     This is the data type used to represent calendar time.  In the GNU
     C library and other POSIX-compliant implementations, `time_t' is
     equivalent to `long int'.  When interpreted as an absolute time
     value, it represents the number of seconds elapsed since 00:00:00
     on January 1, 1970, Coordinated Universal Time.  (This date is
     sometimes referred to as the "epoch".)

     In other systems, `time_t' might be either an integer or
     floating-point type.


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



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