Мне хотелось бы думать, что часть программного обеспечения, которое я пишу сегодня, будет использоваться через 30 лет. Но я также знаю, что многие из них основаны на традиции UNIX разоблачения времени как количества секунд с 1970 года.
#include <stdio.h>
#include <time.h>
#include <limits.h>
void print(time_t rt) {
struct tm * t = gmtime(&rt);
puts(asctime(t));
}
int main() {
print(0);
print(time(0));
print(LONG_MAX);
print(LONG_MAX+1);
}
Результат выполнения:
- Thu Jan 1 00:00:00 1970
- Сб Авг 30 18:37:08 2008
- Вт Янв 19 03:14:07 2038
- Пт Дек 13 20:45:52 1901
Функции ctime(), gmtime() и localtime() принимают в качестве аргумента значение времени, представляющее время в секундах с момента Эпохи (00:00:00 UTC, 1 января 1970 г., см. время (3 )).
Интересно, есть ли какие-либо активные действия в этой области в качестве программиста или мы должны верить, что все программные системы (например, операционные системы) будут каким-то образом обновлены в будущем?
Обновить Казалось бы, что действительно 64-битные системы безопасны:
import java.util.*;
class TimeTest {
public static void main(String[] args) {
print(0);
print(System.currentTimeMillis());
print(Long.MAX_VALUE);
print(Long.MAX_VALUE + 1);
}
static void print(long l) {
System.out.println(new Date(l));
}
}
- Wed Dec 31 16:00:00 PST 1969
- Сб Авг 30 12:02:40 PDT 2008
- Сб Авг 16 23:12:55 PST 292278994
- Sun Dec 02 08:47:04 PST 292269055
Но как насчет года 292278994?