请用C++帮我实现一个接口,入参为一个UTC时间戳,出参为北京时间
时间: 2023-07-16 20:15:29 浏览: 144
可以使用C++11中的chrono库来实现UTC时间戳转换为北京时间的功能。具体实现如下:
```c++
#include <chrono>
#include <iostream>
#include <iomanip>
std::string convertUTCToBeijing(long long utc_timestamp) {
// 将UTC时间戳转换为时间点
std::chrono::system_clock::time_point tp = std::chrono::system_clock::from_time_t(utc_timestamp);
// 转换为北京时间
std::chrono::hours bj_offset(8);
tp += bj_offset;
// 将时间点转换为时间结构体
std::time_t t = std::chrono::system_clock::to_time_t(tp);
// 将时间结构体转换为字符串
std::stringstream ss;
ss << std::put_time(std::localtime(&t), "%Y-%m-%d %H:%M:%S");
return ss.str();
}
int main() {
long long utc_timestamp = 1625126400; // 2021-07-01 00:00:00 UTC
std::string beijing_time = convertUTCToBeijing(utc_timestamp);
std::cout << beijing_time << std::endl; // 输出:2021-07-01 08:00:00
return 0;
}
```
在上述代码中,我们使用`std::chrono::system_clock::from_time_t`函数将UTC时间戳转换为时间点,并使用`std::chrono::hours`类型表示北京时间与UTC时间的时差。然后,我们将时间点加上时差,再将时间点转换为时间结构体,最后使用`std::put_time`函数将时间结构体转换为字符串。
阅读全文