This leads to rather unfortunate error messages like this one: [bill@fraser src]$ date +'%s' --date='2038/01/19 03:14:07' 2147483647 [bill@fraser src]$ date +'%s' --date='2038/01/19 03:14:08' date: invalid date `2038/01/19 03:14:08' How is '2038/01/19 03:14:08' an invalid date?
time_t is only 32 bits.
Still a *very* unfortunate error message, don't you think?
Right... But this needs fixing in glibc's mktime() function [in the long run]. Probably won't be possible before we move time_t to 64 bit.
The time_t type is only meant for system events. I.e., it represents events which happened or will happen during the runtime of the system. Most 32 bit platforms for the limitation. Maybe, when the critical year 2038 nears and there are people stupid enough to still use these legacy system, somebody will rewrite the time_t handling. But this isn't going to happen here and now.