📜  颤振转换日期时间在月份中的某天 - C++ (1)

📅  最后修改于: 2023-12-03 15:42:31.640000             🧑  作者: Mango

颤振转换日期时间在月份中的某天 - C++

有时候,我们需要将一个特定日期的颤振(YMDhms)转换为该日期在月份中的某一天。在这种情况下,我们可以利用C++的时间函数mktime将颤振转换为time_t类型,然后利用localtime函数将其转换为tm结构体,最后获取tm结构体中的tm_mday字段即可。下面是一个示例程序:

#include <iostream>
#include <ctime>

int main() {
    std::tm tm_time = {0};
    std::string str_time = "20220107124530";
    int ymdhms[6] = {0};
    for (int i = 0; i < 6; i++) {
        ymdhms[i] = std::stoi(str_time.substr(i*2, 2));
    }
    tm_time.tm_year = ymdhms[0] - 1900;
    tm_time.tm_mon = ymdhms[1] - 1;
    tm_time.tm_mday = 1;
    tm_time.tm_hour = ymdhms[2];
    tm_time.tm_min = ymdhms[3];
    tm_time.tm_sec = ymdhms[4];
    std::time_t time = std::mktime(&tm_time);
    std::tm* tm_month = std::localtime(&time);
    int day = tm_month->tm_mday;
    std::cout << day << std::endl;
    return 0;
}

我们首先定义一个tm结构体用于存储时间,然后从输入中解析出年月日时分秒部分,将其填充到tm结构体中,最后调用mktime函数将其转换为time_t类型。然后,我们再利用localtime函数将其转换为本地时间,并从tm结构体中读取该月份中的某一天(即tm_mday字段)。

运行这个程序,输出结果为:

7

即这个日期在1月份中的第7天。