在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

#include

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;

}

蔣神

蔣神

egg***@1634年前 (2017-07-23)

更多推荐

linux下的localtime函数,C 库函数 – localtime() | 菜鸟教程