我正在尝试制作一个 callendar,因此我使用 time_t 和 localtime_s 来存储时间和日期信息,然后将其存储在 Calendar 类的各个成员中:
void Callendar::Initialize()
{
time_t now = time(0);
tm *localTime = null;
localtime_s(localTime, &now);
LocalSeconds = localTime->tm_sec;
LocalMinutes = localTime->tm_min;
LocalHours = localTime->tm_hour;
LocalDays = localTime->tm_mday;
LocalMonths = localTime->tm_mon;
LocalYears = localTime->tm_year;
DaysSinceSunday = localTime->tm_wday;
DaysSinceJanuaryFirst = localTime->tm_yday;
HoursDaylightSavings = localTime->tm_isdst;
}
所有编译都很好,但是在运行时我得到:
调试断言失败!
程序:C:\Users\MyPC\Desktop\Framework\Framework\Debug\Framework.exe 文件:f:\dd\vctools\crt_bld\self_x86\crt\src\loctim64.c 行:69
表达式:( ptm != NULL )
关闭失败的断言消息后,我在此行收到标准调试错误:
static __inline errno_t __CRTDECL localtime_s(struct tm * _Tm, const time_t * _Time)
{
return _localtime64_s(_Tm, _Time);
}
这基本上是在Calendar:Initialize()中调用 *localtime_s(localTime, &now);* 的结果 我可以使用此功能的弃用版本吗?我知道还有其他函数可以获取本地时间,但我不知道哪个是“正确的”。其他人向我建议我不应该使用“本地时间”,但似乎 localtime_s 也不起作用。