用localtime-创新互联

在c++开发中,有时候会提示localtime() unsafe,这时候就可以使用localtime_s()来替换。

成都创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业绵阳服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
错误:C4996	
'localtime': This function or variable may be unsafe.
Consider using localtime_s instead. 
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 
See online help for details。

法一:在文件中针对随后内容关闭警告。(直接关闭警告不理会,但可能会出错!)

#pragma warning(disable : 4996)

法二:用localtime_s()替换

//先看源码
#if __STDC_WANT_SECURE_LIB__
            _Check_return_wat_
            static __inline errno_t __CRTDECL ctime_s(
                _Out_writes_(_SizeInBytes) _Post_readable_size_(26) char*         const _Buffer,
                _In_range_(>=,26)                                   size_t        const _SizeInBytes,
                _In_                                                time_t const* const _Time
                )
            {
                return _ctime64_s(_Buffer, _SizeInBytes, _Time);
            }

            _Check_return_wat_
            static __inline errno_t __CRTDECL gmtime_s(
                _Out_ struct tm*    const _Tm,
                _In_  time_t const* const _Time
                )
            {
                return _gmtime64_s(_Tm, _Time);
            }

            _Check_return_wat_
            static __inline errno_t __CRTDECL localtime_s(
                _Out_ struct tm*    const _Tm,
                _In_  time_t const* const _Time
                )
            {
                return _localtime64_s(_Tm, _Time);
            }
        #endif

浅说一下上面三个函数:

1、ctime_s():将给定时间转换为当地日历,转换为文本表示。

2、gmtime_s():将历元以来的给定时间转换为日历时间。将结果存储在静态存储器中,返回指向该静态存储器的指针。

3、localtime_s():将历元以来的给定时间转换为以本地时间表示的日历时间。将结果存储在静态存储器中,返回指向该静态存储器的指针。

//下面是日期参数
struct tm
{
    int tm_sec;   // seconds after the minute - [0, 60] including leap second
    int tm_min;   // minutes after the hour - [0, 59]
    int tm_hour;  // hours since midnight - [0, 23]
    int tm_mday;  // day of the month - [1, 31]
    int tm_mon;   // months since January - [0, 11]
    int tm_year;  // years since 1900
    int tm_wday;  // days since Sunday - [0, 6]
    int tm_yday;  // days since January 1 - [0, 365]
    int tm_isdst; // daylight savings time flag
};
示例:
//strftime(...)中第三个参数控制格式,可以根据具体需要调整。
//用localtime()获取当前时间
time_t ticks = time(NULL);
struct tm* p_Time = localtime(&ticks);

char c_TimeStamp[64];
memset(c_TimeStamp, 0 ,sizeof(c_TimeStamp));
strftime(c_TimeStamp, sizeof(c_TimeStamp), "%Y-%m-%d %H:%M:%S", p_Time);
cout<

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:用localtime-创新互联
URL标题:http://azwzsj.com/article/gesoe.html