您的位置:首页 > 编程语言 > C语言/C++

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

2017-10-26 22:32 495 查看

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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言