在Visual Studio 2015里使用asctime函数报错C4996提示asctime不安全,建议使用asctime_s代替。与localtime_s结合使用:
#include <iostream> #include <ctime> using namespace std; int main() { struct tm t; //tm结构指针 char stTmp[32]; time_t now; //声明time_t类型变量 time(&now); //获取系统日期和时间 localtime_s(&t, &now); //获取当地日期和时间 asctime_s(stTmp, &t); cout << stTmp << endl; return 0; }
在 Visual Studio 2015 里也可持续使用 localtime,但要在首行加上 #define _CRT_SECURE_NO_WARNINGS 取消安全检查
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<ctime> using namespace std; void main() { time_t t = time(0); tm tt = *localtime(&t); cout << tt.tm_hour << endl; system("pause"); return; }
在Visual Studio 2015里使用localtime函数报错C4996提示localtime函数不安全,推荐使用localtime_s代替。
Visual Studio 2010极其以后的版本,新增了安全函数,改成localtime_s(),语法格式也发生了变化:
errno_t localtime_s( struct tm* _tm, const time_t *time );
其中:
_tm 指向要填充的时间结构的指针。 time 指针,指向存储的时间。 如果成功,返回值则为零。 如果失败,返回值将是错误代码。 错误代码是在 Errno.h 中定义的。 结构类型的字段 tm 存储下面的值,其中每个为 int。 tm_sec 分钟后的几秒 (0-59)。 tm_min 小时后的分钟 (0-59)。 tm_hour 午夜后经过的小时 (0-23)。 tm_mday 月 (1-31) 天。 tm_mon 月 (0 – 11;年 1 月 = 0)。 tm_year 年份 (当前年份减去 1900年)。 tm_wday 星期几 (0 – 6;星期日 = 0)。 tm_yday 每年的一天 (0-365;1 月 1 日 = 0)。 tm_isdst 如果夏令时有效,则为,正值夏时制不起作用; 如果为 0如果夏时制的状态是未知的负值。 如果 TZ 设置环境变量,C 运行库会假定规则适用于美国境内用于实现夏令时 (DST) 计算。
下面以一个Visual Studio 2015实例来输出当地日期与时间:
#include <iostream> #include <ctime> using namespace std; int main(void) { struct tm t; //tm结构指针 time_t now; //声明time_t类型变量 time(&now); //获取系统日期和时间 localtime_s(&t, &now); //获取当地日期和时间 //格式化输出本地时间 printf("年:%d\n", t.tm_year + 1900); printf("月:%d\n", t.tm_mon + 1); printf("日:%d\n", t.tm_mday); printf("星期:%d\n", t.tm_wday); printf("一年中:%d\n", t.tm_yday); printf("时:%d\n", t.tm_hour); printf("分:%d\n", t.tm_min); printf("秒:%d\n", t.tm_sec); printf("夏令时:%d\n", t.tm_isdst); system("pause"); return 0; }
Visual Studio 2017 运行 ctime 报错 C4996 显示 ctime 为不安全函数,推荐使用 ctime_s 代替 ctime。除了在 #include 前面加上 #pragma warning(disable:4996) 还可以更改预处理定义:项目 -> 属性 -> 配置属性 ->C/C++ -> 预处理器 -> 预处理器定义,增加:_CRT_SECURE_NO_DEPRECATE
Visual Studio 2013 运行 ctime 报错 C4996 显示 ctime 为不安全函数,Visual Studio 2015 在错误 C4996 中推荐使用 ctime_s 代替 ctime。但是有另一种方法,在所有的 #include 前面加上 #pragma warning(disable:4996) 就可以了:
#pragma warning(disable:4996) #include <iostream> #include <time.h> using namespace std; int main() { time_t curtime; time(&curtime); printf("当前时间 = % s", ctime(&curtime)); return 0; }
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1994c-function-asctime
在Visual Studio 2015里使用asctime函数报错C4996提示asctime不安全,建议使用asctime_s代替。与localtime_s结合使用:
1993c-function-localtime
在 Visual Studio 2015 里也可持续使用 localtime,但要在首行加上 #define _CRT_SECURE_NO_WARNINGS 取消安全检查
1992c-function-localtime
在Visual Studio 2015里使用localtime函数报错C4996提示localtime函数不安全,推荐使用localtime_s代替。
Visual Studio 2010极其以后的版本,新增了安全函数,改成localtime_s(),语法格式也发生了变化:
其中:
下面以一个Visual Studio 2015实例来输出当地日期与时间:
1991c-function-ctime
Visual Studio 2017 运行 ctime 报错 C4996 显示 ctime 为不安全函数,推荐使用 ctime_s 代替 ctime。除了在 #include 前面加上 #pragma warning(disable:4996) 还可以更改预处理定义:项目 -> 属性 -> 配置属性 ->C/C++ -> 预处理器 -> 预处理器定义,增加:_CRT_SECURE_NO_DEPRECATE
1990c-function-ctime
Visual Studio 2013 运行 ctime 报错 C4996 显示 ctime 为不安全函数,Visual Studio 2015 在错误 C4996 中推荐使用 ctime_s 代替 ctime。但是有另一种方法,在所有的 #include 前面加上 #pragma warning(disable:4996) 就可以了: