Qt设置系统时间
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Qt设置系统时间
大家都知道Qt中有QDateTime等有关时间与日期的类,类中包含很多成员函数,可以很方便的实现有关时间与日期的操作,比如:想要获得系统当前的时间与日期,可以调用currentDateTime();但是Qt并没有提供设置系统时间的方法,这样我们只能自己来区分平台,调用平台相关的API,这篇文章实现在Windows下的设置。
常用的与时间有关的Win32 API有两个:
GetSystemTime(); 与SetSystemTime(); 下面是函数原型:
Windows上实现:
VOID GetSystemTime(LPSYSTEMTIME lpSystemTime);
BOOL SetSystemTime( const SYSTEMTIME *lpSystemTime );
我们查一下MSDN 看看LPSYSTEMTIME 与 SYSTEMTIME 是什么东东:
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
从中我们知道SYSTEMTIME 为结构体类型,LPSYSTEMTIME为结构体指针,传递给两个函数的参数都必须是指针或引用类型,下面看一个Qt的调用实例:
1#include
2#include
3#include
4#include
5#include
6#include
7using namespace std;
8
9bool setDate(int,int,int);
10int main(int argc, char*argv[])
11{
12 QCoreApplication a(argc, argv);
13 qDebug()< 15 qDebug()< 17} 18 19bool setDate(int year,int mon,int day) 20{ 21 SYSTEMTIME st; 22 GetSystemTime(&st); // Win32 API 获取系统当前时间,并存入结构体st中 23 st.wYear=year; 24 st.wMonth=mon; 25 st.wDay=day; 26 27return SetSystemTime(&st); //Win32 API 设置系统时间 28} 29 Linux上实现: qt-读取和修改系统时间 QTime ct = QTime::currentTime(); 修改系统时间 // change the system time QDateTime dt = QDateTime::currentDateTime(); dt.setTime(timeEditor->time()); time_t tt = (time_t)dt.toTime_t(); int r = stime(&tt); if (r) { if (errno == EPERM) QMessageBox::warning(this, "Error", "You don't have permission to change system time."); }