c 程式設計之時間使用

2021-06-06 16:58:20 字數 2420 閱讀 3543

對於時間, c 闡述了這樣幾種概念:

1. clock tick: cpu時鐘計時單元

2. calender time: 日曆時間

3. broken-down time: 分解時間

4. local time: 本地時間

5. coordinate universal time: 協調世界時

我試用了前兩種計時方法:它們得到的結果都是以s為單位。無法精確到ms。後發現原來是因為它們得到的時間

都是整數型。相除後就是只取整了。例如下面的第一種方法:

clock_t clock_tick=clock();

double seconds = clock_tick/clocks_per_second;

如果得到clock_tick=160

得到的seconds=0

而我需要的是精確值,其實就是進行下強制型別轉換的。

即將上面的第二句**重新寫為:

double seconds = (double)clock_tick/(double)clocks_per_second;

這樣就可以得到精確值了。

2012.5.25

我又試了下我的omnet上面是要把clocks_per_second寫成clocks_per_sec才可以正常使用

clocks_per_second說是沒有定義。

不知道其他的軟體上是怎麼樣的。

前面三種可以理解為元資料型別, 分別對應於: clock_t, time_t, tm.

而後面兩種只是前三種型別的地域性表示.

第一種, clock tick(cpu時鐘計時單元)

它是一種時間計量單位, 可以和秒進行換算.

clock_t clock_tick = clock(); // 表示程式執行以來到執行完該語句所耗費

的cpu時鐘計時單元個數

long seconds = clock_tick / clocks_per_second; // 換算為秒

第二種, calender time(日曆時間)

它表示的是某一時間點距離原始時間點的秒數, 即它是以秒為單位的時間間隔.

而這個原始時間點, 不同的系統表示不同, 一般為2023年1月1日0時0分0秒, 而

在.net2005中為2023年12月30日0時0分0秒.

// 表示當前時間點距離原始時間點的秒數

time_t calender_time = time(null);

// 輔助函式

// double difftime(time_t time2, time_t time1)

// 計算二者的秒數之差

第三種, broken-down time(分解時間)

它表示的是結構體, 成員包括年月\日時\分秒(其他省略).

// 先得到當前的日曆時間

time_t calender_time = time(null);

// 將日曆時間轉換為當前時區的分解時間

tm* local_time = localtime(&calender_time);

// 這裡提到了當前時區的分解時間, 即本地時間. 因為日期時間

// 因時區的不同而各異,

// 例如: 北京位於東八區.

// 格林威治時間是統一的世界時間, 即上面提到的協調世界時間

// 這裡將日曆時間轉換成格林威治式的分解時間

tm* utc_time = gmtime(&calender_time);

三種時間元型別給了我們很好的靈活性, 但也有值得注意的地方:

1. 可以直接獲取當前的日曆時間.

time_t calender_time = time(null);

2. 只能間接獲取當前的分解時間, 借助localtime()函式進行轉換

time_t calender_time = time(null);

tm* local_date = localtime(&calender_time);

3. 日曆時間可以轉化為日期的字串表示

time_t calender_time;

// 賦值省略

char* szdate = ctime(calender_time);

4. 分解時間可以轉化為日期的字串表示

tm* date;

// 賦值省略

char* szdate = asctime(date);

5. 分解時間可以直接轉換為日曆時間

tm date;

// 賦值省略

time_t time = mktime(&date);

6. 日曆時間可以轉換為分解時間

time_t time;

// 賦值省略

tm* date = localtime(&time);

7. 分解時間可以格式化輸出

// 借助strftime函式以及printf等函式 

Windows程式設計之時間

查msdn可以看到,windows中的時間分為以下幾類 format type description system systemtime year,month,day,hour,second,and millisecond,taken from the internal hardware cloc...

linux下socket程式設計之時間伺服器

為網路上的使用者提供時間服務,即為網路使用者返回伺服器的當前時間 記錄發出請求的網路使用者的ip位址 儲存到檔案中 編寫時間服務客戶端timeclient,該客戶端能夠向伺服器傳送時間服務請求,並把獲得的時間返回給使用者。開發環境 fedora13,vim,gcc timeserver.c檔案。in...

獲取當前時間 使用標準C

大家可能在開發過程中經常會遇到獲取當前系統時間的問題。那麼除了mfc中的ctime類外,有沒有其他的方法呢?答案是肯定的。很多c c 的初學者在學習這門語言的時候,經常是只注意其語法,而其庫函式卻知道的很少。有的知道一些,但是卻很少應用。筆者在這裡建議大家,經常去看看標準c庫,標準c 庫。如果能在開...