📅  最后修改于: 2023-12-03 15:42:31.640000             🧑  作者: Mango
有时候,我们需要将一个特定日期的颤振(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天。