程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++編程之時間使用詳解

C++編程之時間使用詳解

編輯:C++入門知識

對於時間, C 闡述了這樣幾種概念:
 1. Clock Tick: CPU時鐘計時單元
 2. Calender Time: 日歷時間
 3. Broken-down Time: 分解時間
 4. Local Time: 本地時間
 5. Coordinate Universal Time: 協調世界時
 
 前面三種可以理解為元數據類型, 分別對應於: clock_t, time_t, tm.
 而後面兩種只是前三種類型的地域性表示.
 
 第一種, Clock Tick(CPU時鐘計時單元)
    它是一種時間計量單位, 可以和秒進行換算.
    clock_t clock_tick = clock(); // 表示程序運行以來到執行完該語句所耗費
    的CPU時鐘計時單元個數
    long seconds = clock_tick / CLOCKS_PER_SECOND; // 換算為秒

 第二種, Calender Time(日歷時間)
    它表示的是某一時間點距離原始時間點的秒數, 即它是以秒為單位的時間間隔.
    而這個原始時間點, 不同的系統表示不同, 一般為1970年1月1日0時0分0秒, 而
    在.Net2005中為1899年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等函數

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved