作为QT的忠实粉,昨天才学习解决用qt的date设置系统的时间,可谓是映象深刻啊。刚开始在网上查找了很久,网上也有很多的方法,但是都不太适用于我目前的情况,于是经过不断的努力和不断的往前人得膀上爬,终于寻得一个方法,今天就来简单的谈上一谈。作为初级选手,就不用过多的言语表达我心中兴奋的情感了,直接用代码来表达,请看如下:
在我们使用QT时。很多时候都难免会用到系统的时间,但是系统的时间又不是很准,一般都为初始值,因此这就需要我们自己去手动设置了。手动设置呢有两种方法,一种是同ntp网络获取设置,一种就是简单粗暴的直接写上去了,当然用QT还不是最粗暴的,还有通过命令直接设置,这已经不在粗暴的范围了,这在我称之为野蛮。在QT的设置中可以直接的用:
QString time = "date -s \"2018-11-11 14:15:00\"" ; //将日期和时间转为QString
QProcess::startDetached(time);
QProcess::startDetached("hwclock -w"); // 同步系统时间
QProcess::startDetached("sync"); // 保存配置
操作完成OK,简单的时间设置就可以了。接下来说本章的重点,就是怎么样通过dateedit和timeedit控件设置本地时间。首先呢先在UI界面设置两个控件,如下图:
拉出来就是这么个情况,如果想将本地时间设置为"2018-11-11 14:15:00”,而且在QT界面上随时可以设置。呢么首先将上面的时间设置日期为2018-11-11,时间设置为14:15:00,然后在代码中获取控件中的时间,代码为:
QString strYear = ui->dateEdit->sectionText(QDateEdit::YearSection);
QString strMonth = ui->dateEdit->sectionText(QDateEdit::MonthSection);
QString strDay = ui->dateEdit->sectionText(QDateEdit::DaySection);
QString strHour = ui->timeEdit->sectionText(QTimeEdit::HourSection);
QString strMinute =ui->timeEdit->sectionText(QTimeEdit::MinuteSection);
QString strSecond = ui->timeEdit->sectionText(QTimeEdit::SecondSection);
qDebug() << "Year : " << strYear;
qDebug() << "Month : " << strMonth;
qDebug() << "Day : " << strDay;
qDebug() << "Hour : " << strHour;
qDebug() << "Minute : " << strMinute;
qDebug() << "Second : " << strSecond;
获取时间就OK了,然后就写入了,
特殊说明一下,在这里不能直接的将上面的数据写入去,因为格式有错误,所以要先将月份的英文简称处理成为简单的1-12 月,
if(strMonth == "Jan"){strMonth = "01";}
if(strMonth == "Feb"){strMonth = "02";}
if(strMonth == "Mar"){strMonth = "03";}
if(strMonth == "Apr"){strMonth = "04";}
if(strMonth == "May"){strMonth = "05";}
if(strMonth == "Jun"){strMonth = "06";}
if(strMonth == "Jul"){strMonth = "07";}
if(strMonth == "Aug"){strMonth = "08";}
if(strMonth == "Sep"){strMonth = "09";}
if(strMonth == "Oct"){strMonth = "10";}
if(strMonth == "Nov"){strMonth = "11";}
if(strMonth == "Dec"){strMonth = "12";}
QString m3 = strYear+"-"+strMonth+"-"+strDay+" "+strHour+":"+strMinute+":"+strSecond;
QString datetime = "date -s \""+m3+"\"" ;
QProcess::startDetached(datetime);
QProcess::startDetached("hwclock -w"); // 同步系统时间
QProcess::startDetached("sync"); // 保存配置
然后就可以了,运行一遍程序,你会发现惊喜哦,从此以后系统的时间你爱怎么设置就怎么设置了,妈妈再也不用担心系统时间不对了。