如何在 C++ 中将 localtime_s 与指针一起使用

how to use localtime_s with a pointer in c++

我正在使用 C++ 中的一个函数来帮助获取当月的整数。我做了一些搜索并找到了一个使用本地时间的,但我不想将其设置为删除警告,所以我需要使用 localtime_s。但是当我使用它时,我的指针不再起作用,我需要有人帮助我找到我缺少的指针。

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <Windows.h>
#include "FolderTask.h"
#include <ctime> //used for getMonth
#include <string>
#include <fstream>

int getMonth()
{
    struct tm newtime;
    time_t now = time(0);
    tm *ltm = localtime_s(&newtime,&now);
    int Month = 1 + ltm->tm_mon;
    return Month;
}

我得到的错误是:

error C2440: 'initializing': cannot convert from 'errno_t' to 'tm *' note: Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

看起来您使用的是 Visual C++,因此 localtime_s(&newtime,&now); 用您想要的数字填充 newtime 结构。与常规 localtime 函数不同,localtime_s returns 一个错误代码。

所以这是函数的固定版本:

int getMonth()
{
    struct tm newtime;
    time_t now = time(0);
    localtime_s(&newtime,&now);
    int Month = 1 + newtime.tm_mon;
    return Month;
}