C++-STL(18)-ctime-VS2019下的正解

 

时间函数大家很熟了,但是发现在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;


	}

 

你可能感兴趣的:(C++)