从c到c++到qt怎么计算时间的!!!

来源:互联网 发布:厦门微思网络 编辑:程序博客网 时间:2024/04/27 21:22

c语言怎么做计算一个时间的函数:

#include <time.h>#include <stdio.h>int main(int argc,char *argv[]){time_t tmpcal_ptr;struct tm *tmp_ptr = NULL;time(&tmpcal_ptr);//tmpcal_ptr = time();//两种取值方法均可printf("tmpcal_ptr = %ld\n",tmpcal_ptr);tmp_ptr = gmtime(&tmpcal_ptr);printf("after gmtime ,the time id:%d:%d:%d\n",tmp_ptr->tm_hour,tmp_ptr->tm_min,tmp_ptr->tm_sec);tmp_ptr = localtime(&tmpcal_ptr);printf("after localtime,the time id:%d.%d.%d\n",(1900+tmp_ptr->tm_year),(1+tmp_ptr->tm_mon),(tmp_ptr->tm_mday));printf("%d:%d:%d\n",tmp_ptr->tm_hour,tmp_ptr->tm_min,tmp_ptr->tm_sec);return 0;       }

gmtime转化出的是0时区的时间
localtime是将时区考虑在内了,转出的当前时区的时间。但是注意,有些嵌入式设备上被裁减过的系统,时区没有被设置好,导致二者转出来的时间都是0时区的。

c++里面:

#include <iostream>#include <unistd.h>using namespace std;class A{   //const成员函数   public:       A();       void fun() const;       void fun1();    private:                             // 非const成员变量       const int b ;//=1;    // const成员变量,可以在类内对c                             //onst成员变量进行初始化,但是是g++11的版本       int second;       int minute;       int hour;};     A::A():second(0),minute(0),hour(0),b(0)     {     }     void A::fun() const     {       cout<<"the time is :"<<hour<<":"<<minute<<":"<<second<<":"<<endl;     }    void A::fun1()    {       second++;               hour   = second/3600;       minute = (second-hour*3600)/60;       second = (second-hour*3600-minute*60);    }int main(int argc,char *argv[]){  A q;  while(1)    {      q.fun1();      sleep(1);      q.fun();    }  return 0;}

QT 里面用已经封装好的QTime类和QTImer类,完成该功能,将
鼠标点击事件与定时器的控制函数:
timer->start();
timer->stop();
函数绑定在一起;
connect()函数

具体的实现:

 为了方便演示:          用QT设计师,添加了一个pushbutton的按扭           和一个名为lineEdit_1                                  lineEdit_2          的行编辑对象: ``` 具体的代码实现:
/*MAINWINDOW.h*/    #ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QTimer>#include <QTime>#include <QDebug>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();    QTimer * timer;//new a timer    QTime  * timeRecord;//recoed time   //    bool isStart;    int count;private:    Ui::MainWindow *ui;private slots:   void xytimerUpDate();   void on_pushButton_clicked();   void updateTime();};#endif // MAINWINDOW_H

/*
MAINWIDOW.cpp
*/

#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    timer = new QTimer(this);    timeRecord = new QTime(0,0,0); //init the time    isStart = false;    count = 0;     ui->lineEdit_1->setText("0:0:0");     ui->lineEdit_2->setText(timeRecord->toString("hh:mm:ss"));    if(timer == NULL)    {        qDebug()<<"fail timer";    }    else    {         connect(timer,SIGNAL(timeout()),this,SLOT(xytimerUpDate()));         timer->setInterval(500);    }}MainWindow::~MainWindow(){    timer->stop();//stop  count    //ui->lineEdit_1->setText( timer->);    delete timer;//release memeory;    delete ui;}void MainWindow::on_pushButton_clicked(){    if(timer->isActive())      {           timer->stop();      }    else    {         timer->start();    }}void MainWindow::updateTime(){}void MainWindow::xytimerUpDate(){       count++;       int hour = count/3600;       int minute = (count - hour*3600)/60;       int second = (count - hour*3600 - minute *60);       //qDebug()<<"timer :"<<QString().arg(count)<<endl;       ui->lineEdit_1->setText(QString("%1:%2:%3").arg(hour).arg(minute).arg(second));       *timeRecord = timeRecord->addSecs(1);       ui->lineEdit_2->setText(timeRecord->toString("hh:mm:ss"));}

在这里举一个Qstring类的追加功能的案例:

 int b= 10; int c = 20;  ui->lineEdit->setText(QString("%1:%2").arg(b).arg(2));  sleep(5); ui->lineEdit->setText(QString("%1:%2").arg(b).arg(2).append(c));
原创粉丝点击