For how many years into the future does the anonymous technical writer who removed the
comment have to worry about being dogged by a UNIX daemon? Amend your program to
find out.
1. Obtain the current time by calling time().
2. Call difftime() to obtain the number of seconds between now and the highest
value of time_t.
- Format that value into years, months, weeks, days, hours, and minutes. Print it.
Is it longer than your expected lifetime?
Programming Solution
Computer Dating
The results of this exercise will vary between PCs and UNIX systems, and will depend on
the way time_t is stored. On Sun systems, this is just a typedef for long. Our first attempted
solution is
#include <stdio.h>
#include <time.h>
int main() {
time_t biggest = 0x7FFFFFFF;
printf("biggest = %s \n", ctime(&biggest) );
return 0;
}
This gives a result of:
biggest = Mon Jan 18 19:14:07 2038
However, this is not the correct answer! The function ctime()converts its argument into
local time, which will vary from Coordinated Universal Time (also known as Greenwich
Mean Time), depending on where you are on the globe. California, where this book was
written, is eight hours behind London, and several years ahead.