QT中怎么修改当前系统时间?

cgq081616 2010-04-16 11:29:15
本人是在windows下做的 找到了settimeofday这个函数能修改时间,但是不知道怎么算,希望各位大虾给予帮助
...全文
2711 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
feilinhe 2012-05-01
  • 打赏
  • 举报
回复 1
[Quote=引用 19 楼 的回复:]

蛮久时间的帖子了,希望你能看到。。。
我也出现了这位同样的问题,显示的时间总与我设置的时间相差8个小时,随之连日期也会相差一天。。。。
你说的setLocalTime具体该怎么用,可以说说?
引用 14 楼 的回复:

引用 10 楼 wzcyt 的回复:

我在windows系统下,在qt程序中调用setsystemtime函数设置系统时间,为什么最终的结果和我要设置的时间相差……
[/Quote]
windows下的具体解决方法:
1.时差的解释:
http://blog.csdn.net/csu_yang/article/details/7073780
2.使用setLocalTime在windows XP下需要提升权限:
代码

BOOL ImproveProcPriv()
{
HANDLE token;
//提升权限
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&token))
{
MessageBox(NULL,"打开进程令牌失败...","错误",MB_ICONSTOP);
return FALSE;
}
TOKEN_PRIVILEGES tkp;
tkp.PrivilegeCount = 1;
::LookupPrivilegeValue(NULL,SE_SYSTEMTIME_NAME,&tkp.Privileges[0].Luid);
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(token,FALSE,&tkp,sizeof(tkp),NULL,NULL))
{
MessageBox(NULL,"调整令牌权限失败...","错误",MB_ICONSTOP);
return FALSE;
}
CloseHandle(token);
return TRUE;
}

3.windwos 设置时间API参考:
http://blog.sina.com.cn/s/blog_4c7fa77b01000at8.html
dengdeng1109 2012-05-01
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 的回复:]

这个我做了,代码给你吧,
void adjustdate(int year,int mon,int mday,int hour,int min,int sec)
{
time_t t;
struct tm nowtime;
nowtime.tm_sec=sec;/* Seconds.[0-60] (1leapsecond)*/
nowtime.tm_min=min;/* Mi……
[/Quote]

我做了一点修改,运行之后直接把系统时间改到了1970年1月1日,而且我的time edit和date edit不起作用呀?
#include "set_system_time.h"
#include "ui_set_system_time.h"

Set_System_Time::Set_System_Time(QWidget *parent) :
QDialog(parent),
ui(new Ui::Set_System_Time)
{
ui->setupUi(this);

connect(ui->timeEdit,SIGNAL(timeChanged(QTime)),this,SLOT(timeedit()));
connect(ui->dateEdit,SIGNAL(dateChanged(QDate)),this,SLOT(dateedit()));
}

Set_System_Time::~Set_System_Time()
{
delete ui;
}

void Set_System_Time::timeedit()
{
time_t st;
struct tm *p;
p=localtime(&st);
p->tm_hour=ui->timeEdit->time().hour();
p->tm_min=ui->timeEdit->time().minute();
st=mktime(p);
stime(&st);
}

void Set_System_Time::dateedit()
{
time_t st;
struct tm *p;
p=localtime(&st);
p->tm_year = ui->dateEdit->date().year();
p->tm_mon = ui->dateEdit->date().month();
p->tm_mday = ui->dateEdit->date().day();
st=mktime(p);
stime(&st);
}
dengdeng1109 2012-04-27
  • 打赏
  • 举报
回复
嗯。。。谢谢
[Quote=引用 22 楼 的回复:]

这个我做了,代码给你吧,
void adjustdate(int year,int mon,int mday,int hour,int min,int sec)
{
time_t t;
struct tm nowtime;
nowtime.tm_sec=sec;/* Seconds.[0-60] (1leapsecond)*/
nowtime.tm_min=min;/* Mi……
[/Quote]
xiaofan812 2012-04-27
  • 打赏
  • 举报
回复
这个我做了,代码给你吧,
void adjustdate(int year,int mon,int mday,int hour,int min,int sec)
{
time_t t;
struct tm nowtime;
nowtime.tm_sec=sec;/* Seconds.[0-60] (1leapsecond)*/
nowtime.tm_min=min;/* Minutes.[0-59] */
nowtime.tm_hour=hour;/* Hours. [0-23]*/
nowtime.tm_mday=mday;/* Day.[1-31] */
nowtime.tm_mon=mon-1;/* Month. [0-11]*/
nowtime.tm_year=year-1900 ;/* Year-1900.*/
nowtime.tm_isdst=-1 ;/* DST.[-1/0/1]*/
t=mktime(&nowtime);
stime(&t);
}
sno_guo 2012-04-26
  • 打赏
  • 举报
回复
真不好意思啊,没有分了无法提问,请楼主帮忙,谢谢了

我想开始做QT的编程,但是身边有没有这样的同事,想问下现在大家都是在哪个linux平台上做的,ubuntu?redhat el5? 还是别的什么?
因为和大家一个平台的话,有问题时好解决,谢谢!
dengdeng1109 2012-04-25
  • 打赏
  • 举报
回复
蛮久时间的帖子了,希望你能看到。。。
我也出现了这位同样的问题,显示的时间总与我设置的时间相差8个小时,随之连日期也会相差一天。。。。
你说的setLocalTime具体该怎么用,可以说说?
[Quote=引用 14 楼 的回复:]

引用 10 楼 wzcyt 的回复:

我在windows系统下,在qt程序中调用setsystemtime函数设置系统时间,为什么最终的结果和我要设置的时间相差8个小时呢?有那位大侠知道什么原因吗?

使用setLocalTime
另外linux下,可以使用system()函数执行date命令设置系统时间日期
其实windows下也可以用WinExec()执行date命令和time……
[/Quote]
yanchong 2010-09-21
  • 打赏
  • 举报
回复
利用qt执行不同系统下的修改时间的函数即可
yzhj2005 2010-09-21
  • 打赏
  • 举报
回复
qt没有设置时间的函数吧
火箭猫 2010-09-20
  • 打赏
  • 举报
回复
这个用system调用系统命令就可以了,不过要用超级用户的权限才行
ailinty 2010-09-20
  • 打赏
  • 举报
回复
如果开发板有触摸屏显示器的话,就可以通过Qtopia直接修改系统时间了啊。
feilinhe 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wzcyt 的回复:]

我在windows系统下,在qt程序中调用setsystemtime函数设置系统时间,为什么最终的结果和我要设置的时间相差8个小时呢?有那位大侠知道什么原因吗?
[/Quote]
使用setLocalTime
另外linux下,可以使用system()函数执行date命令设置系统时间日期
其实windows下也可以用WinExec()执行date命令和time命令设置日期,时间的
gemfield 2010-09-19
  • 打赏
  • 举报
回复
那和你位于东8区有关系
GE
LE
headio 2010-09-03
  • 打赏
  • 举报
回复
哦,知道了。
tzcherish 2010-07-15
  • 打赏
  • 举报
回复
学习来了。。
wzcyt 2010-07-15
  • 打赏
  • 举报
回复
我在windows系统下,在qt程序中调用setsystemtime函数设置系统时间,为什么最终的结果和我要设置的时间相差8个小时呢?有那位大侠知道什么原因吗?
dext 2010-04-18
  • 打赏
  • 举报
回复
设置系统时间 是平台 相关的

linux
stime
SRC: kernel/time.c

Windows
SetSystemTime
HEADER: Winbase.h / Windows.h
  • 打赏
  • 举报
回复
Qt好像搞不定,估计要用系统命令了,根据不同的系统使用不同的命令看看
MicroSky2813 2010-04-17
  • 打赏
  • 举报
回复
Qt 为了跨平台就要失去一些绑定系统的功能。
根据所需系统使用相应的API,在.pro里面可以设定对不同的系统使用不同的编译
lishaman 2010-04-17
  • 打赏
  • 举报
回复
QT4里面可以这样把 QTime time=QTime::currentTime();
然后在转换显示的格式就可以啦
yeelone 2010-04-17
  • 打赏
  • 举报
回复
这方面好像还没有一个统一的解决方法。只能使用特定系统的api了。
加载更多回复(3)

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧