c++怎樣獲取系統時間
2008-04-28 15:34
//方案— 長處:僅使用c標準庫;缺點:僅僅能精確到秒級
#include
#include
int main( void )
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
#include
int main( void )
//方案三,長處:利用系統函式,還能改動系統時間
//此檔案必須是c++檔案
#include
#include
using namespace std;
void main()
//方案四,將當前時間折算為秒級,再通過對應的時間換算就可以
//此檔案必須是c++檔案
#include
#include<ctime>
using namespace std;
int main()
2,時間的儲存,通過提前定義的兩種結構來儲存:
1,日曆時間(calendar time)是通過time_t資料型別來表示的,用time_t表示的時間(日曆時間)是從乙個時間點(比如:2023年1月1日0時0分0秒)到此時的秒數。在time.h中,我們也能夠看到time_t是乙個長整型數:
#ifndef _time_t_defined
typedef long time_t;
/* 時間值 */
#define _time_t_defined
/* 避免反覆定義 time_t */
#endif
2,在標準c/c++中,我們可通過tm結構來獲得日期和時間,tm結構在time.h中的定義例如以下:
struct tm ;
3,時間的顯示:
time.h 標頭檔案裡提供了asctime()函式(引數為tm結構指標)和ctime()函式(引數為time_t結構)將時間以固定的格式顯示出來,兩者的返回值都是char*型的字串。返回的時間格式為:星期幾 月份 日期 時:分:秒 年/n/0;time.h還提供了兩種不同的函式將日曆時間(乙個用time_t表示的整數)轉換為我們平時看到的把年月日時分秒分開顯示的時間格式 tm:
struct tm * gmtime(const time_t *timer);
gmtime()函式是將日曆時間轉化為世界標準時間(即格林尼治時間),並返回乙個tm結構體來儲存這個時間
struct tm * localtime(const time_t * timer);localtime()函式是將日曆時間轉化為本地時間
#include
#include
#include
#include
int main(void)
4,時間差的計算:
所用函式:c/c++中的計時函式是clock(),而與其相關的資料型別是clock_t。在msdn中對clock函式定義例如以下:
clock_t clock( void );函式返回從「開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clock tick)數,clock_t是乙個長整形數,儲存時間的資料型別。在time.h檔案裡,還定義了乙個常量clocks_per_sec,它用來表示一 秒鐘會有多少個時鐘計時單元,其定義例如以下:
#define clocks_per_sec ((clock_t)1000)
每 過千分之中的乙個秒(1毫秒),呼叫clock()函式返回的值就加1,時鐘計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不能夠通過改變 clocks_per_sec的定義,通過把它定義的大一些,從而使計時精度更高呢?這樣是不行的。在標準c/c++中,最小的計時單位是一毫秒。 double difftime(time_t time1, time_t time0);這個函式來計算時間差。
#include "stdafx.h"
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
5,時間的其它用途
用作隨機數的種子,因為時間獲得的實際上是乙個double型別的長整數,通過time(null)函式獲得,作為srand(time(null))的種子產生隨機數比較好。
#include "stdafx.h"
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
system("pause");
return 0;
C 系統時間獲取
在c 中想要獲取當前系統的時候可以使用函式 time t time time t timer 使用這個函式如果傳入的 引數不是null 那麼,它就會把當前系統的時間設定到這個指標當中 這個函式返回的 數字是 從 00 00 hours,jan 1,1970 utc 的 秒 struct tm loc...
c 獲取系統時間
方案 優點 僅使用c標準庫 缺點 只能精確到秒級 include include int main void size t strftime char strdest,size t maxsize,const char format,const struct tm timeptr 根據格式字串生成字...
C 獲取系統時間
include include using namespace std int main 說明 struct tm 在vc 中,我們可以借助ctime時間類,獲取系統當前日期 ctime t ctime getcurrenttime 獲取系統日期 int d t.getday 獲得幾號 int y ...