天天看點

擷取系統目前時間C/C++

轉載位址:點選打開連結

個人覺得第二種還是比較實用的,而且也是最常用的~

不過當計算算法耗時的時候,不要忘記second,不能隻要用Milliseconds來減,不然後出現負值,若是算法耗時太長就得用minutes啦。再不然,就hours……

//方案— 優點:僅使用C标準庫;缺點:隻能精确到秒級

#include <time.h> 

#include <stdio.h> 

int main( void ) 

    time_t t = time(0); 

    char tmp[64]; 

    strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) ); 

    puts( tmp ); 

    return 0; 

}

size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);

根據格式字元串生成字元串。

struct tm *localtime(const time_t *timer);

取得當地時間,localtime擷取的結果由結構tm傳回

傳回的字元串可以依下列的格式而定:

%a 星期幾的縮寫。Eg:Tue 

%A 星期幾的全名。 Eg: Tuesday

%b 月份名稱的縮寫。 

%B 月份名稱的全名。 

%c 本地端日期時間較佳表示字元串。 

%d 用數字表示本月的第幾天 (範圍為 00 至 31)。日期

%H 用 24 小時制數字表示小時數 (範圍為 00 至 23)。 

%I 用 12 小時制數字表示小時數 (範圍為 01 至 12)。 

%j 以數字表示當年度的第幾天 (範圍為 001 至 366)。 

%m 月份的數字 (範圍由 1 至 12)。

%M 分鐘。 

%p 以 ''AM'' 或 ''PM'' 表示本地端時間。 

%S 秒數。 

%U 數字表示為本年度的第幾周,第一個星期由第一個周日開始。 

%W 數字表示為本年度的第幾周,第一個星期由第一個周一開始。 

%w 用數字表示本周的第幾天 ( 0 為周日)。 

%x 不含時間的日期表示法。 

%X 不含日期的時間表示法。 Eg: 15:26:30

%y 二位數字表示年份 (範圍由 00 至 99)。 

%Y 完整的年份數字表示,即四位數。 Eg:2008

%Z(%z) 時區或名稱縮寫。Eg:中國标準時間 

%% % 字元。

//方案二 優點:能精确到毫秒級;缺點:使用了windows API 

#include <windows.h> 

#include <stdio.h> 

int main( void ) 

SYSTEMTIME sys; 

GetLocalTime( &sys ); 

printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek); 

return 0;

}

//方案三,優點:利用系統函數,還能修改系統時間

//此檔案必須是c++檔案

#include<stdlib.h>

#include<iostream>

using namespace std;

void main()

{

    system("time");

}

//方案四,将目前時間折算為秒級,再通過相應的時間換算即可

//此檔案必須是c++檔案

#include<iostream>

#include<ctime>

using namespace std;

int main()

{

time_t now_time;

now_time = time(NULL);

cout<<now_time;

return 0;

}