手动将时间戳转换成struct tm而不依赖于localtime()或strftime()等系统库函数,可以自己实现一些基本的日期计算
时间: 2024-10-12 18:13:31 浏览: 16
将时间戳转换为格式化日期的工具
4星 · 用户满意度95%
在C++中,要手动将时间戳转换为`struct tm`而不用依赖于`localtime()`或`strftime()`,你可以使用`<ctime>`库中的`gmtime()`函数,它返回的是UTC时间。以下是一个示例:
```cpp
#include <iostream>
#include <ctime>
// 时间戳(以秒为单位)
unsigned long long timestamp;
// 将时间戳转换为struct tm
std::tm time_struct;
time_t raw_time = static_cast<time_t>(timestamp);
time_struct = *std::gmtime(&raw_time); // 使用gmtime处理UTC时间
// 提取并打印各部分
std::cout << "Year: " << std::put_time(&time_struct, "%Y") << "\n";
std::cout << "Month: " << std::put_time(&time_struct, "%m") << "\n";
std::cout << "Day: " << std::put_time(&time_struct, "%d") << "\n";
std::cout << "Hour: " << std::put_time(&time_struct, "%H") << "\n";
std::cout << "Minute: " << std::put_time(&time_struct, "%M") << "\n";
std::cout << "Second: " << std::put_time(&time_struct, "%S") << "\n";
// 注意: 这里的计算基于自1970年1月1日以来的时间差,不包括闰秒
```
这段代码展示了如何从给定的时间戳创建一个表示对应UTC时间的`struct tm`,然后通过`std::put_time()`函数将其格式化为可读的日期和时间。
阅读全文