我们有一个遗留项目,我们需要获得支持的最长纪元时间,这是通过以下代码片段实现的:
#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()返回null。 仅当我们传递预处理器参数 _USE_32BIT_TIME_T 时才会发生这种情况。 没有它,它返回正确的最大值03:14:07,2038年1月19日,UTC。
由于2015年使用_USE_32BIT_TIME_T预处理器,是否存在任何已知问题。