vs2013写c++程序,其中localtime_s函数不接受一个参数怎么解决?!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2013写c++程序,其中localtime_s函数不接受一个参数怎么解决?!相关的知识,希望对你有一定的参考价值。

Visual C++ 6.0开发环境中显示当地日期与时间主要通过localtime()函数来实现,该函数的原型在time.h头文件中,其语法格式如下:

struct tm *localtime(xonst time_t *timer)

该函数的作用是把timer所指的时间(如函数time返回的时间)转换为当地标准时间,并以tm结构形式返回。其中,参数timer为主要获取当前时间的传递参数,格式为time_t指针类型。

而在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;

参考技术A 这样:
tm timeinfo;
localtime_s(&curtime,&timeinfo);追问

谢谢你,我把你给我的这个,两个参数互换位置就通过了,能帮我讲讲原因吗!

追答

函数带后面带 _s 的是 c 函数的安全版本。localtimec的带一个参数,而localtime_s带两个参数,其他的如pritnf printf_s等等,功能是一样的,改成这样是为安全考虑的。
localtime_s只是把 localtime的返回值改成参数而已。

追问

谢谢!

本回答被提问者和网友采纳

以上是关于vs2013写c++程序,其中localtime_s函数不接受一个参数怎么解决?!的主要内容,如果未能解决你的问题,请参考以下文章

localtime vs localtime_s 和适当的输入参数

如何用visual studio 2010 写c++程序

我用VS2013练习写代码(控制台应用程序),总是“error2019 无法解析的外部符号”的错误,这是为啥?

替代 C/C++ localtime()

下载了个VS2015写C++,但是运行的时候,结果窗口只是闪一下,没有显示出来,求大神解释

将 C++ ATL 可执行应用程序从 VS2003 迁移到 VS2013