Timestamp

UNIX timestamp
A UNIX timestamp is a 32 bit signed integer that starts at January 1st, 1970 at 00:00 hours. This program shows what the size of time_t is on a UNIX system:

int main(void) {    printf("size time_t = %d\n",  sizeof(time_t)); return (0); }
 * 1) include 
 * 2) include 

When executed it gives different results on the system:

dione$ uname -a ; ./time_t OpenBSD dione.centroid.eu 4.9 GENERIC#477 amd64 size time_t = 4

pjp@miranda:~$ uname -a ; ./time_t Linux miranda 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux size time_t = 8

So why is time_t an 8 byte value on Ubuntu GNU/Linux? Well you may have heard of the 2038 problem, by extending the time_t value to 64 bits the 2038 problem will not affect any computer running with 64 bits timestamps.

Old UNIX computers should get a patch or forever be doomed on Tue Jan 19 04:14:07 2038 because the rollover may put the date to Fri Dec 13 21:45:52 1901. You guessed it, it's a similar problem to the year 2000 problem that some of us experienced.

Windows timestamp
Windows timestamps for dates in NTFS are 64 bit. No 2038 problem exists here.