У нас есть устаревший проект, в котором нам нужно получить максимальное время поддерживаемой эпохи, которое было достигнуто с помощью следующего фрагмента кода:
#include "stdafx.h"#include <stdio.h> /* puts, printf */
#include <time.h> /* time_t, struct tm, time, localtime */
#define LONG_MAX 2147483647L // maximum (signed) long value
int main()
{
struct tm * timeinfo;
long elapsedTime = LONG_MAX;
time_t temp = elapsedTime;
timeinfo = localtime(&temp);
printf("Current local time and date: %s", asctime(timeinfo));
getchar();
return 0;
}
Хорошо, что он работал до перехода на Visual Studio 2015.
После миграции, хотя localtime () возвращает ноль.
Это происходит только когда мы передаем аргумент препроцессора _USE_32BIT_TIME_T .
Без которого он возвращает правильное максимальное значение 03:14:07, 19 января 2038 года, UTC.
Есть ли какие-либо известные проблемы из-за использования препроцессора _USE_32BIT_TIME_T в 2015 году.
Задача ещё не решена.
Других решений пока нет …