目录
在超级用户权限下,使用date MMddhhmmyyyy.ss实现时间校正。由于Qt提供QProcess来执行shell命令,所以你也可以通过Qt编程来实现修改系统时间。
操作
权限
遇到用户权限的问题,利用以下命令一次性完成,不用人工再输入用户密码:(类似用法见linux系统下添加IP的过程记录_liji_digital的博客-CSDN博客)
echo "密码" | sudo -S 具体指令
date与hwclock
date命令完成日期时间校正。但是计算机重启后又会回到旧的时间上。为了能永久性写入新时间。在date命令后,你还要执行hwclock --systohc指令
代码
int main(int argc, char *argv[])
{
QString m_qstrDateTime = QString("%1%2%3%4%5.%6").arg("12"/*月份,必须两位*/).arg(
QString("%1").arg(1, 2, 10, QChar('0'))/*日,必须两位*/).
arg(8, 2, 10, QChar('0')/*小时,必须两位*/).arg(1, 2, 10, QChar('0')/*分钟,必须两位*/)
.arg("2022"/*年份,必须4位*/).arg(1, 2, 10, QChar('0')/*秒,必须两位*/);
QString qstrDateTime = QString("/bin/sh -c \"echo \"%1\" | sudo -S date %2\"").arg("密码").arg(m_qstrDateTime);
qDebug()<<qstrDateTime;
QProcess::execute(qstrDateTime);
QString qstrSaveTime = QString("/bin/sh -c \"echo \"%1\" | sudo -S hwclock --systohc\"").arg("密码");
QProcess::execute(qstrSaveTime);
return 0;
}
效果
上面的代码将日期时间设置为2022年12月1日,8点1分1秒
在命令行输入date检查效果