C++ 在visual studio 2015中将_USE_32BIT_TIME设置为预处理器的一部分时,localtime返回null
我们有一个遗留项目,我们需要通过以下代码片段获得支持的最大纪元时间:C++ 在visual studio 2015中将_USE_32BIT_TIME设置为预处理器的一部分时,localtime返回null,c++,visual-studio-2015,max,localtime,C++,Visual Studio 2015,Max,Localtime,我们有一个遗留项目,我们需要通过以下代码片段获得支持的最大纪元时间: #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(
#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;
}
#包括“stdafx.h”
#包括/*看跌期权,printf*/
#包括/*time\u t、struct tm、time、localtime*/
#定义长\u MAX 2147483647L//最大(有符号)长值
int main()
{
结构tm*时间信息;
long elapsedTime=long_MAX;
时间温度=经过的时间;
timeinfo=localtime(&temp);
printf(“当前本地时间和日期:%s”,asctime(timeinfo));
getchar();
返回0;
}
好的是,它在VisualStudio2015迁移之前一直有效。
通过localtime()进行迁移后,返回null。
只有当我们传递预处理器参数\u USE\u 32BIT\u TIME\u T时,才会发生这种情况。
如果没有它,它将返回正确的最大值03:14:072038年1月19日UTC
由于2015年使用32位时间前置处理器,是否存在任何已知问题。无需担心。。算了吧。。看起来msdn对2015年通过的长值实施了更严格的检查#定义LONG_MAX 2147463847L需要传递才能获得32位端支持的最大时间。无需担心。。算了吧。。看起来msdn对2015年通过的长值实施了更严格的检查#需要传递define LONG_MAX 2147463847L以获得32位端支持的最大时间。