时间函数大家很熟了,但是发现在vs2019下,好用的ctime等函数编译不通过。何解?
因为不安全,全部替换成 类似于ctime_s这样的。
上代码:编译不通过
void test_time()
{
//1.程序启动时间 clock_t
clock_t starttm = clock();
// 基于当前系统的当前日期/时间
time_t now = time(0);
cout << "1970到目前经过秒数:" << now << endl;
// 把 now 转换为字符串形式
char* dt = ctime(&now);
cout << "本地日期和时间:" << dt << endl;
// 基于当前系统的当前日期/时间
tm* lctm = localtime(&now);
dt = asctime(lctm);
cout << "Local 日期和时间:" << dt << endl;
// 把 now 转换为 tm 结构(GMT时间)
tm* gmtm = gmtime(&now);
dt = asctime(gmtm);
cout << "UTC 日期和时间:" << dt << endl;
}
可以编译通过的
void test_time_s()
{
//1.程序启动时间 clock_t
clock_t starttm = clock();
// 基于当前系统的当前日期/时间
time_t now = time(0);
cout << "1970到目前经过秒数:" << now << endl;
// 把 now 转换为字符串形式
char dt[26];
ctime_s(dt, sizeof dt, &now);
cout << "本地日期和时间:" << dt << endl;
// 基于当前系统的当前日期/时间
tm lctm;
localtime_s(&lctm, &now);
cout << "Local 日期和时间:" << endl;
cout << "year-" << lctm.tm_year << "month-" << lctm.tm_mon << "day-" << lctm.tm_yday << ":" << lctm.tm_hour << ":" << lctm.tm_min << ":" << lctm.tm_sec << endl;
// 把 now 转换为 tm 结构(GMT时间)
tm gmtm;
gmtime_s(&gmtm, &now);
cout << "UTC 日期和时间:" << endl;
cout << "year-" << gmtm.tm_year << "month-" << gmtm.tm_mon << "day-" << gmtm.tm_yday << ":" << gmtm.tm_hour << ":" << gmtm.tm_min << ":" << gmtm.tm_sec << endl;
}