QT5实现程序修改系统时间

目前电脑的系统时间一般是自动与time.windows.com进行在线同步,每次同步的时间周期为一周

系统时间更新.png

-目前实现程序进行系统时间的修改,如果想实现程序自我对时,就需要把系统自带的Internet时间同步设置关闭。
-QT本身不提供时间设置的函数,实现修改系统时间使用windows的native API函数SetSystemTime函数,因此头文件里需要加入#include <Windows.h>
代码实现

void MainWindow::on_pushButton_clicked()
{
    SYSTEMTIME st;
       GetLocalTime(&st);
       st.wHour=ui->lineEdit_Hour->value();
       st.wMinute=ui->lineEdit_Minu->value();
       st.wSecond=ui->lineEdit_Sec->value();
       SetLocalTime(&st);
}

网上有老铁说更改时间会出现8个小时的误差,其代码如下:

bool MainWindow::timeedit()
{
    SYSTEMTIME st;
    GetSystemTime(&st);
    st.wHour = ui->timeEdit->time().hour();
    st.wMinute = ui->timeEdit->time().minute();
    return SetSystemTime(&st);
}

以上的代码运行结果会比当前时间少八个小时,是因为GetSystemTime()获取的是格林尼治时间;北京时间是时区+8,所以是修改时间有偏差

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容