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));