温馨提示×

c++中unix时间戳与本地时间的转换方法是什么

c++
小樊
81
2024-09-24 21:32:03
栏目: 编程语言

在C++中,可以使用<chrono>库和<ctime>库将Unix时间戳转换为本地时间,以及将本地时间转换为Unix时间戳。以下是两种转换方法的示例代码:

  1. Unix时间戳转本地时间:
#include <iostream>
#include <chrono>
#include <ctime>

int main() {
    // Unix时间戳,单位为秒
    long long unix_timestamp = 1633016823;

    // 使用std::chrono库将Unix时间戳转换为time_point对象
    std::chrono::system_clock::time_point time_point = std::chrono::system_clock::from_time_t(unix_timestamp);

    // 将time_point对象转换为本地时间(time_t类型)
    std::time_t local_time = std::chrono::system_clock::to_time_t(time_point);

    // 使用localtime函数将本地时间转换为字符串格式
    char buffer[80];
    std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", std::localtime(&local_time));

    std::cout << "本地时间: " << buffer << std::endl;

    return 0;
}
  1. 本地时间转Unix时间戳:
#include <iostream>
#include <chrono>
#include <ctime>

int main() {
    // 获取当前本地时间
    std::time_t local_time = std::time(nullptr);

    // 使用localtime函数将本地时间转换为time_t对象
    std::tm* local_tm = std::localtime(&local_time);

    // 使用std::chrono库将本地时间转换为time_point对象
    std::chrono::system_clock::time_point time_point = std::chrono::system_clock::from_time_t(local_time);

    // 将time_point对象转换为Unix时间戳(单位为秒)
    long long unix_timestamp = std::chrono::duration_cast<std::chrono::seconds>(time_point.time_since_epoch()).count();

    std::cout << "Unix时间戳: " << unix_timestamp << std::endl;

    return 0;
}

0