2016-04-23 80 views
-6

我的目标是编写一个程序,将执行以下操作: 当用户在将来输入时间点时,它应该以格式(hh:mm:ss)显示时间,直到该时间点,如果用户询问 对于时间,它应该以格式(hh:mm:ss)返回当前时间。我如何使用系统时间来实现我的目标? 我目前状态为止:如何使用C++检查时间?

#include <iostream> 
#include<conio.h> 

using namespace std; 
class Time{ 
    int hour, minute, second; 
public: 
    void SetTime(int hour1=0, int minute1=0, int second1=0){ 
     hour = hour1; 
     minute=minute1; 
     second=second1; 
     cout<<"set time working"; 
    } 
    void display(){ 
     cout<<"hour | minute | second"<<endl; 
     cout<<hour<<" "<<minute<<" "<<second; 
    } 
}; 

int main(){ 
    Time time; 
    //char om; 
    int hour1, minute1,second1; 
    cout<<"enter the hour,minute,second: "; 
    cin>>hour1; 
    cin>>minute1; 
    cin>>second1; 
    time.SetTime(hour1,minute1,second1); 
    cout<<"\n The current time?"; 
    time.display(); 
    return 0; 
} 
+2

计算机总是在后台计数。它被称为_system clock_。因此,您可以在用户设置时间时查询它,然后在他们请求时再次查询。以秒为单位计算差异,并将其添加到您自己的时钟例程中。或者使用''的其余部分。 – paddy

回答

0

你必须使用C时间函数来获得计算机时钟的时间。

基本思路是以下几点:

  • 询问用户“他的”时间
  • 在同一时间保存计算机的当前时间

当时间显示更新的当前时间:

  • 检查计算机当前时间
  • 使用以前存储倍的增量

要做到这一点,因为C“时间”功能的工作原理计算用户的当前时间,我已经在节目存储在几秒钟的时间变量,所以我有只需一个存储秒的单个变量即可转换小时,分钟和秒钟。

这里的功能:

#include <iostream> 
#include <conio.h> 
#include <time.h> 

using namespace std; 

class Time { 
private: 

    time_t userTime; 
    time_t computerTime; 

public: 

    void SetTime(int hour1 = 0, int minute1 = 0, int second1 = 0) 
    { 
     userTime = hour1 * 60 * 60 + minute1 * 60 + second1; // Convert input time in seconds. 
     time(&computerTime); // Get computer's current time. 

     cout<<"set time working"; 
    } 

    void display() 
    { 
     time_t currentComputerTime; 
     time(&currentComputerTime); // Get computer's updated current time. 

     time_t currentUserTime = userTime + (currentComputerTime - computerTime); // Calculate current user's time in seconds. 

     // Convert time_t variable in hours, minutes and seconds. 
     int hour = currentUserTime/(60 * 60); 
     int minute = (currentUserTime/60) % 60; 
     int second = currentUserTime % 60; 

     cout<<"hour | minute | second"<<endl; 
     cout<<hour<<" "<<minute<<" "<<second; 
    } 
}; 

int main() 
{ 
    Time time; 
    //char om; 
    int hour1, minute1,second1; 

    cout<<"enter the hour,minute,second: "; 
    cin>>hour1; 
    cin>>minute1; 
    cin>>second1; 

    time.SetTime(hour1,minute1,second1); 

    char pcz[200]; 

    cout<<"\n The current time?"; 
    cin >> pcz; 

    time.display(); 

    return 0; 
} 
+0

你能解释一下程序 – Mayur

+0

中发生了什么吗?我修改了答案。希望现在更清楚 – Carlo

1

我建议你稍微作弊。在开始时,在用户输入时间之前或之后,您将获得系统时钟值。然后你等待用户询问时间。当他询问时,再次获得系统时钟值,从中减去之前的值 - 这会给你经过的时间量。将此数量添加到用户输入的时间,并显示结果。