Что мы должны сделать, чтобы подготовиться к 2038 году?

Я хотел бы думать, что часть программного обеспечения, которое я пишу сегодня, будет использоваться через 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);
}

Результаты выполнения в:

Чт 1 января 00:00:00 1970Сб 30 авг 18:37:08 2008Вт янв 19 03:14:072038Пт 13 дек 20:45:521901

Функции ctime (), gmtime () и localtime () все принимают в качестве аргумента значение времени, представляющее время в секундах с начала эпохи (00:00:00 UTC, 1 января 1970 года; см. Time (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));
    }
}
Ср 31 дек 16:00:00 по тихоокеанскому времени 1969Сб 30 августа 12:02:40 PDT 2008Сб 16 августа 23:12:55 PST292278994Вс дек 02 08:47:04 PST292269055

Но как насчет 292278994 года?

Ответы на вопрос(10)

Ваш ответ на вопрос