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

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

30.08.2008 10:42:57 Просмотров 29 Источник

Я хотел бы думать, что некоторые из программ, которые я пишу сегодня, будут использоваться через 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: 07 2038
  • Пт Дек 13 20: 45: 52 1901

Функции 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 PST 1969
  • Сб 30 августа 12: 02: 40 PDT 2008
  • Сб 16 августа 23: 12: 55 PST 292278994
  • ВС дек 02 08: 47: 04 PST 292269055

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

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/36239/what-should-we-do-to-prepare-for-2038#comment235672_36239
Вы были бы счастливы, если бы к этому году вас привлекли к ответственности за какой-нибудь несчастный случай, не так ли?
https://stackoverflow.com/questions/36239/what-should-we-do-to-prepare-for-2038#comment388693_36239
Не беспокойтесь о годе 292278994. Большинство систем выходят из строя в 2147483647 году.
https://stackoverflow.com/questions/36239/what-should-we-do-to-prepare-for-2038#comment7666225_36239
Я думаю, что вы убедили нас-нам нужно немедленно перейти на 128 бит!
https://stackoverflow.com/questions/36239/what-should-we-do-to-prepare-for-2038#comment10858895_36239
Конец света в 2012 году, зачем вам нужно измерять любое время после этого?
https://stackoverflow.com/questions/36239/what-should-we-do-to-prepare-for-2038#comment57762017_36239
К тому времени солнце превратилось в красного гиганта, и человечество исчезло.

Ответы - Что мы должны сделать, чтобы подготовиться к 2038 году? / What should we do to prepare for 2038?

rmmh

30.08.2008 10:45:45

К 2038 году все библиотеки времени должны будут использовать 64-битные целые числа, так что это не будет иметь большого значения (в программном обеспечении, которое не полностью не поддерживается).

Программ на Коболе может быть весело.

https://stackoverflow.com/questions/36239/what-should-we-do-to-prepare-for-2038/36242#comment87111_36242
Рассмотрим, когда заканчивается новая 30-летняя ипотека на дом.
https://stackoverflow.com/questions/36239/what-should-we-do-to-prepare-for-2038/36242#comment496115_36242
Впервые я столкнулся с работой с выплатами алиментов на детей в 1981 году. Система взяла ожидаемую дату рождения ребенка, в 1982 году, добавила 18, получила 0, заметила, что 81 > 0, и решила, что обязательство закончилось. Как вы сказали, Бэнкс попал в эту переделку раньше.
Teifion

30.08.2008 10:47:16

Rob Walker

30.08.2008 10:49:06

Является ответом!
Schwern

20.10.2008 06:05:35

benc

26.10.2008 01:15:48

Kasprzol

26.10.2008 01:39:42

Martin Brown

25.03.2009 08:42:44

Scott Jackson

28.03.2009 10:48:54

Ian Ringrose

03.10.2010 08:33:10

Machinegon

07.03.2017 11:00:38

Закрыть X