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

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_OBJECT

public:
    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));
原创文章 59 获赞 39 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_28174951/article/details/78359535