溫馨提示×

如何在C++中使用strftime進(jìn)行時(shí)間戳轉(zhuǎn)換

c++
小樊
86
2024-09-06 12:38:32
欄目: 編程語言

strftime 是 C++ 標(biāo)準(zhǔn)庫 <ctime> 中的一個(gè)函數(shù),用于將 tm 結(jié)構(gòu)體(通常包含日期和時(shí)間信息)格式化為一個(gè)字符串

#include<iostream>
#include <ctime>
#include <iomanip>

int main() {
    // 獲取當(dāng)前時(shí)間
    std::time_t now = std::time(nullptr);
    
    // 將 time_t 轉(zhuǎn)換為 tm 結(jié)構(gòu)體
    std::tm* local_time = std::localtime(&now);

    // 創(chuàng)建一個(gè)足夠大的字符數(shù)組來存儲(chǔ)格式化后的時(shí)間戳字符串
    const size_t buffer_size = 100;
    char buffer[buffer_size];

    // 使用 strftime 將 tm 結(jié)構(gòu)體格式化為字符串
    std::strftime(buffer, buffer_size, "%Y-%m-%d %H:%M:%S", local_time);

    // 輸出格式化后的時(shí)間戳字符串
    std::cout << "Formatted timestamp: "<< buffer<< std::endl;

    return 0;
}

在這個(gè)示例中,我們首先獲取當(dāng)前時(shí)間(以 time_t 類型表示),然后將其轉(zhuǎn)換為 tm 結(jié)構(gòu)體。接下來,我們創(chuàng)建一個(gè)足夠大的字符數(shù)組來存儲(chǔ)格式化后的時(shí)間戳字符串。最后,我們使用 strftime 函數(shù)將 tm 結(jié)構(gòu)體格式化為字符串,并將結(jié)果輸出到控制臺(tái)。

注意:strftime 函數(shù)的第二個(gè)參數(shù)是緩沖區(qū)的大小,確保緩沖區(qū)足夠大以容納格式化后的字符串。否則,可能會(huì)導(dǎo)致緩沖區(qū)溢出錯(cuò)誤。

0