📜  用C++打印系统时间(3种不同方式)(1)

📅  最后修改于: 2023-12-03 15:27:09.349000             🧑  作者: Mango

用C++打印系统时间(3种不同方式)

在 C++ 中,获取系统时间可以有多种方式。本文将介绍三种不同的方法。

方法一

使用 time 函数和 localtime 函数来获取当前时间,并使用 strftime 函数将时间格式化为指定的格式。

代码如下:

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

int main() {
    std::time_t now = std::time(nullptr);
    std::tm *local = std::localtime(&now);
    char timeStr[80];
    std::strftime(timeStr, 80, "%Y-%m-%d %H:%M:%S", local);
    std::cout << timeStr << std::endl;
    return 0;
}

其中 time 函数返回当前时间的秒数,localtime 函数将秒数转化为本地时间,strftime 函数用于格式化时间字符串。例如,"%Y-%m-%d %H:%M:%S" 的格式会将时间转化为 "2021-09-12 23:05:48" 的形式。

方法二

使用 std::chrono 库来获取当前系统时间,并使用 std::put_time 函数将时间格式化为指定的格式。

代码如下:

#include <iostream>
#include <iomanip>
#include <chrono>

int main() {
    auto now = std::chrono::system_clock::now();
    auto time = std::chrono::system_clock::to_time_t(now);
    std::cout << std::put_time(std::localtime(&time), "%Y-%m-%d %H:%M:%S") << std::endl;
    return 0;
}

其中 system_clock 类型表示系统时钟,now 函数获取当前时间,to_time_t 函数将时间转化为秒数,put_time 函数用于格式化时间字符串。

方法三

使用 GetLocalTime 函数来获取当前本地时间,并将时间转化为指定格式。

代码如下:

#include <iostream>
#include <iomanip>
#include <Windows.h>

int main() {
    SYSTEMTIME st;
    char timeStr[80];
    GetLocalTime(&st);
    std::sprintf(timeStr, "%04d-%02d-%02d %02d:%02d:%02d.%03d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
    std::cout << timeStr << std::endl;
    return 0;
}

其中 SYSTEMTIME 结构体表示系统时间,GetLocalTime 函数获取系统本地时间,sprintf 函数用于格式化时间字符串。

以上三种方法都可以用来获取系统时间,选择哪种方法根据实际需求来定。