C++一个日期转变为时间戳
时间: 2025-06-28 22:09:57 浏览: 9
### C++ 中将日期字符串转换为时间戳
在C++中,可以利用标准库中的`<ctime>`和`<sstream>`来实现从日期字符串到时间戳的转换。具体过程涉及解析输入的日期字符串并将其映射至内部表示形式(如`struct tm`),再通过特定函数获得对应的时间戳。
对于给定格式的日期字符串,首先需要创建一个`std::istringstream`对象用于读取该字符串,并依次提取年份、月份以及日子等组成部分。之后借助这些数据填充`tm`结构体成员变量;特别注意的是,在设置完成后应当调用`mktime()`函数处理可能存在的闰秒等问题,最终得到基于纪元开始以来经过了多少秒的结果即为我们所说的时间戳[^1]。
下面是一个完整的例子展示如何执行上述操作:
```cpp
#include <iostream>
#include <iomanip>
#include <sstream>
#include <ctime>
// 将指定格式的日期字符串转为时间戳
time_t StringToTimestamp(const std::string& str, const char* format) {
struct tm t = {};
// 使用stringstream解析输入字符串
std::istringstream ss(str);
ss >> std::get_time(&t, format);
if (ss.fail()) {
throw std::runtime_error("Invalid date/time string");
}
return mktime(&t); // 返回自1970年以来的秒数
}
int main() {
try {
std::string dateString = "2023-04-15";
const char* fmt = "%Y-%m-%d"; // 定义期望的日期格式
time_t ts = StringToTimestamp(dateString, fmt);
std::cout << "Date [" << dateString
<< "] converted to timestamp: " << ts << '\n';
}
catch (const std::exception& e){
std::cerr << e.what();
}
return 0;
}
```
此程序定义了一个名为 `StringToTimestamp` 的辅助函数,它接受两个参数——一个是待转化的日期字符串,另一个是指明其格式化的模板串。这里采用 `%Y-%m-%d` 来匹配四位数年的ISO 8601样式表达方式。当成功解析后,则会输出相应的UNIX时间戳值[^4]。
阅读全文
相关推荐











