如何在c ++中显示实时

时间:2012-03-18 15:15:37

标签: c++

有人可以告诉我如何在c ++中显示实时。我的意思是,当程序运行时,您可以看到秒钟和/或分钟倒计时,就像挂在墙上的真正时钟

这就是我所拥有的:

int main ()
{
  time_t rawtime; //creates and object of the built in time function
  struct tm * timeinfo; //no idea what this do

  time ( &rawtime ); //gets the time from the computer
  timeinfo = localtime ( &rawtime ); //store that time here

  //it displays current date and time except time is frozen and not real time
  cout<< "Current local time and date: "<<asctime (timeinfo)<< endl; 


  system("pause");
  return 0;

}

6 个答案:

答案 0 :(得分:3)

不是在C ++中(在C / Win32中),但有效。

#include <stdio.h>
#include <windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
    SYSTEMTIME stime;   //structure to store system time (in usual time format)
    FILETIME ltime;     //structure to store local time (local time in 64 bits)
    FILETIME ftTimeStamp;
    char TimeStamp[256];//to store TimeStamp information
    while (true){
    ////Prepare data needed to output the time stamp:
    GetSystemTimeAsFileTime(&ftTimeStamp); // Gets the current system time
    FileTimeToLocalFileTime (&ftTimeStamp,&ltime);//convert in local time and store in ltime
    FileTimeToSystemTime(&ltime,&stime);//convert in system time and store in stime

    sprintf(TimeStamp, "%d:%d:%d, %d.%d.%d \r",stime.wHour,stime.wMinute,stime.wSecond, stime.wDay,stime.wMonth,stime.wYear);
    printf(TimeStamp);

    Sleep(1000);
    }

    system("pause");
    return 0;
} 

答案 1 :(得分:1)

一些基本的C ++会有很长的路要走:www.cplusplus.com

int main ()
{
    time_t rawtime; //creates and object of the built in time function
    struct tm * timeinfo; //no idea what this do

    while (true)
    {
        time( &rawtime ); //gets the time from the computer
        timeinfo = localtime( &rawtime ); //store that time here

        //it displays current date and time except time is frozen and not real time
        cout<< "Current local time and date: "<<asctime (timeinfo)<< endl; 

        sleep(1000); //1 second sleep
    }
    system("pause");
    return 0;
}

答案 2 :(得分:1)

试试这个:

while (true) {
    std::cout << '\r'; // return to the beginning of the line
    getAndPrintTime(); // do what you do now, but don't write endl
}

假设你想要覆盖终端中的同一个地方,两个简单的东西是'\ r'用于回车,'\ b'用于退格(如果你想要备份一个角色而不是一个整线)。

答案 3 :(得分:1)

添加system("cls");

像这样:

 time_t rawtime;
 struct tm* timeinfo;
 while(true)
 {
 system("cls");
 time(&rawtime);
 timeinfo=localtime(&rawtime);
 cout<<"Time : "<<asctime(timeinfo);
 Sleep(1000);
 }

答案 4 :(得分:0)

标准C ++语言在2011年发布的最新C ++ 11标准之前没有任何时间概念,很少实现。在Linux上,您可以考虑使用实现大部分功能的GCC 4.6或4.7。

(旧版C ++ 03为您提供<ctime>

否则,时间由操作系统特定的库和系统调用(例如Linux和Posix上的gettimeofdayclock_gettime)提供。

如果你完全符合C ++ 11标准的最新C ++标准(可能不太可能,特别是在Windows上),你可以使用<chrono>标准标题。

答案 5 :(得分:0)

下面是我的程序中的一项功能,它显示星期几,时间(hh:mm)和日期(dd / mm / yyy)。当我使用SYSTEMTIME结构时,我意识到显示的时间太快了四个小时,所以我求助于这种方法。希望这可以帮助。 面向Windows用户...

void time()
{
    cout << "The current date is: ";
    system("date/t");
    cout << "The current time is: ";
    system("time/t");
    cout << "Time zone: ";
    system("tzutil /g");
    cout << endl;
}

注意:这可以通过查询系统的日期,时间和时区来工作。大多数经验丰富的程序员都不建议使用system()工具,但这最终取决于您。