回到刚才的问题,使用C++里面的strptime函数,实现从Begin TriggerBlock Mon May 29 03:14:47.394 am 2023里面解析年月日分钟秒,秒要精确到小数
时间: 2024-03-20 14:39:45 浏览: 46
C++中获取UTC时间精确到微秒的实现代码
好的,可以使用 C++ 中的 `strptime` 函数来实现从字符串中解析出日期时间信息。具体的代码如下所示:
```cpp
#include <iostream>
#include <cstring>
#include <ctime>
using namespace std;
int main() {
string input_str = "Begin TriggerBlock Mon May 29 03:14:47.394 am 2023";
struct tm tm_time = {};
char format[] = "%a %b %d %H:%M:%S %p %Y";
char *ptr = strptime(input_str.c_str(), format, &tm_time);
if (ptr == nullptr) {
cerr << "Parsing failed.\n";
return 1;
}
double seconds = stod(ptr);
cout << "Year: " << tm_time.tm_year + 1900 << " Month: " << tm_time.tm_mon + 1 << " Day: " << tm_time.tm_mday
<< " Hour: " << tm_time.tm_hour << " Minute: " << tm_time.tm_min << " Second: " << seconds << endl;
return 0;
}
```
解析出来的年、月、日、小时、分钟和秒信息都存储在 `tm_time` 结构体中,其中 `tm_year` 存储的是相对于 1900 年的年份偏移量,需要加上 1900 才是实际的年份。秒信息则需要通过指针 `ptr` 来解析,使用 `stod` 函数将其转换成浮点数即可。
以上代码输出的结果为:
```
Year: 2023 Month: 5 Day: 29 Hour: 3 Minute: 14 Second: 47.394
```
其中,年、月、日、小时和分钟与输入字符串中的信息相同,秒精确到小数位,与要求一致。
阅读全文