Linux及QT时间设置

转自:alada007

1.首先,转一下:

问:Linux下如何保存设置的系统时间?
答:分以下步骤进行:
(1)通过开发板控制台设置开发板的当前系统时间:
date [MMDDhhmm[[CC]YY][.ss]]
例如:
date 010410462008
(2)将系统时间写入RTC:
hwclock -w
读出检验一下,写入是否正确:
hwclock -r
(3)修改开发板根文件系统中的/etc/init.d/rcS文件, 
添加一行:
hwclock -s 或都/sbin/hwclock -s
用于在系统启动时从RTC读出日期时间并设置到系统时间。
(4)重新启动开发板,验证系统时间是否争取。
    另注: 

语法格式:

hwclock [--adjust][--debug][--hctosys][--show][--systohc][--test]
[--utc][--version][--set --date=<日期与时间>]

参数说明:

  • –adjust or -a

hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。

  • –hctosys or -s

将系统时钟调整为与目前的硬件时钟一致。

  • –set –date=<日期与时间>

设定硬件时钟。

  • –show or -r

显示硬件时钟的时间与日期。

  • –systohc or -w

将硬件时钟调整为与目前的系统时钟一致。

  • –version or -v

显示版本信息。

  • –debug

显示hwclock执行时详细的信息。

  • –test

仅测试程序,而不会实际更改硬件时钟。

  • –utc

若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。

同步系统时钟和硬件时钟

# hwclock –w

设置硬件时钟时间:

# hwclock --set --date="9/8/2007 16:45:05"

查看硬件时钟

# hwclock -r1.在虚拟终端中使用date命令来查看和设置系统时间
    查看系统时钟的操作:
    # date

    设置系统时钟的操作:
    # date 091713272003.30

    通用的设置格式:
    # date 月日时分年.秒

    2.使用hwclock或clock命令查看和设置硬件时钟
    查看硬件时钟的操作:
    # hwclock --show 或
    # clock --show
    2003年09月17日 星期三 13时24分11秒 -0.482735 seconds

    设置硬件时钟的操作:
    # hwclock --set --date="09/17/2003 13:26:00"

    或者
    # clock --set --date="09/17/2003 13:26:00"

    通用的设置格式:hwclock/clock --set --date=“月/日/年时:分:秒”。

    3.同步系统时钟和硬件时钟

    Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。

    硬件时钟与系统时钟同步:
    # hwclock --hctosys

    或者
    # clock --hctosys

    上面命令中,--hctosys表示Hardware Clock to SYStem clock。

    系统时钟和硬件时钟同步:
    # hwclock --systohc

    或者
    # clock --systohc


2.我的方法


[cpp]  view plain copy
  1. Widget::Widget(QWidget *parent) :  
  2.     QWidget(parent),  
  3.     ui(new Ui::Widget)  
  4. {  
  5.     ui->setupUi(this);  
  6.     lineedit=new QLineEdit(this);  
  7.     lineedit->setGeometry(0,100,200,20);  
  8.     connect(lineedit,SIGNAL(returnPressed()),this,SLOT(changedate()));  
  9.     lineedit->setValidator(new QIntValidator(lineedit));  
  10. }  
  11. void Widget::changedate()  
  12. {  
  13.     QString valueStr=lineedit->text();  
  14.     long valueInt=valueStr.toInt();  
  15.     qDebug()<<valueInt;  
  16.     int year=valueInt/100000000;  
  17.     qDebug()<<year;  
  18.     int mon=(valueInt%100000000)/1000000;  
  19.     qDebug()<<mon;  
  20.     int mday=((valueInt%100000000)%1000000)/10000;  
  21.     qDebug()<<mday;  
  22.     int hour=(((valueInt%100000000)%1000000)%10000)/100;  
  23.     qDebug()<<hour;  
  24.     int min=(((valueInt%100000000)%1000000)%10000)%100;  
  25.     qDebug()<<min;  
  26.     adjustdate(year+2000,mon,mday,hour,min,0);  
  27. }  
  28. void  Widget::adjustdate(int year,int mon,int mday,int hour,int min,int sec)  
  29.   {  
  30.      nowtime.tm_sec=sec;/* Seconds.[0-60](1 leap second)*/  
  31.      nowtime.tm_min=min;/* Minutes.[0-59] */  
  32.      nowtime.tm_hour=hour;/* Hours. [0-23] */  
  33.      nowtime.tm_mday=mday;/*  Day.[1-31]  */  
  34.      nowtime.tm_mon=mon-1;/* Month.[0-11]*/  
  35.      nowtime.tm_year=year-1900;/* Year- 1900.*/  
  36.      nowtime.tm_isdst=-1;/*DST.[-1/0/1]*/  
  37.      t=mktime(&nowtime);  
  38.      stime(&t);  
  39.   }  

3.用QLineEdit来实例一个lineedit,然后让它只能输入数字,我发现,尼玛,最多输入十个,好吧对我来说足够了,用两位表示年份就可以了,其他的月日小时分都是2个,秒钟就自己设置算了,最后调用了一个C里面的结构体,我要申明这个adjustdate函数是我网上找的,在比较了用date -s system() QProcess QDateTime这些东西之后,我发现还是我的最好。。。啦啦啦,结束!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值