📜  cpp 设置时间 - C++ (1)

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

使用C++设置时间

在C++中,可以使用标准库函数来获取和设置时间。本文将介绍如何使用C++来设置系统时间。

1. 获取当前时间

我们可以使用<ctime>头文件中的time函数来获取当前时间。该函数返回的是从1970年1月1日起的秒数(time_t类型)。我们可以使用mktime()将其转换为tm(struct time)类型,其中包含具体的年、月、日和时间信息。

#include <iostream>
#include <ctime>
using namespace std;

int main()
{
    time_t now = time(0); // 获取当前时间
    tm *ltm = localtime(&now); // 将当前时间转换为本地时间

    // 输出年月日和时间
    cout << "Year: " << 1900 + ltm->tm_year << endl;
    cout << "Month: " << 1 + ltm->tm_mon << endl;
    cout << "Day: " << ltm->tm_mday << endl;
    cout << "Time: " << ltm->tm_hour << ":";
    cout << ltm->tm_min << ":";
    cout << ltm->tm_sec << endl;
    
    return 0;
}

输出结果:

Year: 2021
Month: 10
Day: 18
Time: 18:0:12
2. 设置系统时间

我们可以使用<ctime>头文件中的set_time函数来设置时间。但是直接使用此函数是不安全的,因为它将系统时间直接设置为一个固定值。更好的做法是先将时间信息存储在tm结构中,然后使用mktime()函数将其转换为一个time_t类型的值,最后再将该值传递给set_time()函数。

以下是一个示例程序,可以将系统时间设置为指定的年、月、日、小时、分和秒。

#include <iostream>
#include <ctime>
using namespace std;

int main()
{
    tm t;
    t.tm_year = 2021 - 1900;  // 年份,从1900算起
    t.tm_mon = 9;             // 月份,0-11
    t.tm_mday = 18;           // 日,1-31
    t.tm_hour = 12;           // 小时,0-23
    t.tm_min = 0;             // 分钟,0-59
    t.tm_sec = 0;             // 秒,0-59

    time_t t_sec = mktime(&t); // 将tm结构转换为time_t类型

    if (t_sec != (time_t)-1)
    {
        if (set_time(&t_sec))
        {
            cout << "系统时间已设置为:" << ctime(&t_sec) << endl;
        }
        else
        {
            cout << "设置时间失败!" << endl;
        }
    }
    else
    {
        cout << "转换时间失败!" << endl;
    }

    return 0;
}

输出结果:

系统时间已设置为:Sat Oct 18 12:00:00 2021

总结

使用C++来设置系统时间,可以通过<ctime>头文件中的函数完成。需要注意的是,直接使用set_time()函数设置时间是不安全的,应该先将时间信息存储在tm结构中,然后再转换为time_t类型,最后再传递给set_time()函数。