欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中時間的基本用法小結(jié)

 更新時間:2017年01月21日 11:26:34   作者:netcon  
處理時間是編程中經(jīng)常遇到的問題,C語言中提供了一些時間處理函數(shù),在此記錄下一些基本的用法。下面這篇文章主要給大家介紹了C語言中關(guān)于時間的基本用法的相關(guān)資料,需要的朋友可以參考借鑒,感興趣的朋友們來一起看看吧。

前言

在我學的這些編程語言中,總是記不住它們的時間處理方式,每次用到時都要重新看,所以想著在這里記錄下來,也方便用到時查找,也方便有需要的朋友們參考。

time_t和struct tm

在C語言中用time_t類型表示一個時間,通常它是一個和long一樣長的整數(shù),也就是說,在32位環(huán)境下,它是4字節(jié),在64位環(huán)境下,它是8字節(jié)。它保存的就是一個整數(shù)值,表示了從1970-01-01 08:00:00到其所表示時間的秒數(shù),它是一個非負整數(shù),所以,time_t無法表示早于1970-01-01 08:00:00的時間。

一個很常用的函數(shù)就是time_t time(time_t *_v) ,它的參數(shù)是一個time_t類型的指針,返回一個和傳入?yún)?shù)相等的time_t類型值。如果time()函數(shù)的參數(shù)是0,則返回當前的時間。

現(xiàn)在我們已經(jīng)能用C語言表示一個時間了,但是這個時間只是從某個時間開始的秒數(shù),如何表示更詳細的時間細節(jié)呢?這就要用到struct tm類型了,它可以表示更具體的時間信息。

它一個結(jié)構(gòu)體,我們就先看一下它的成員信息,一個struct tm類型包括以下成員:

  • int tm_year表示時間的年份,它的值從1900年開始算起,也就是說當其值為1的時候,表示的是1901年。因為time_t類型表示的時間范圍不早于1970年,所以這個值通常不小于70。
  • int tm_mon表示時間是幾月,它的值是0到11,0表示的是一月,而11表示的是12月。
  • int tm_mday表示時間是當前月的幾號,其值的范圍自然是根據(jù)月份不同也不相同。
  • int tm_wday表示時間是星期幾,它的值的范圍是0到6,0是星期天,1是星期一,6是星期六。
  • int tm_yday表示時間是當前年的第幾天,要注意的是1月1號是第0天。
  • int tm_hour表示時間是幾時。
  • int tm_min表示時間是幾分。
  • int tm_sec表示時間是幾秒。
  • int tm_isdst表示是否是夏令時。

localtime()

如何把一個time_t類型構(gòu)造成struct tm類型呢?用struct tm *localtime(const time_t *_v)函數(shù)即可,注意參數(shù)和返回值都是指針類型。

#include <stdio.h>
#include <time.h>

int main()
{
 time_t tt = time(0); //獲取當前時間
 struct tm *pst = localtime(&tt); //把time_t類型轉(zhuǎn)換為struct tm類型
 printf("The year is %d.\n", pst->tm_year + 1900); //別忘了要加1900

 return 0;
}

上述程序輸出:

The year is 2016.

mktime()

那么如何把struct tm類型轉(zhuǎn)換為time_t類型呢?就用time_t mktime(struct tm *_v)函數(shù),注意參數(shù)是指針類型。

那么如何輸出時間呢?可以簡單的使用char *ctime(time_t *_v)函數(shù)和char *asctime(struct tm *_v)函數(shù),要注意的是返回的字符串結(jié)尾包含換行符\n。

#include <stdio.h>
#include <time.h>

int main()
{
 struct tm st;
 st.tm_year = 2016 - 1900;
 st.tm_mon = 8;
 st.tm_mday = 13;
 st.tm_hour = 16;
 st.tm_min = 30;
 st.tm_sec = 0;
 st.tm_isdst = 0;
 time_t tt = mktime(&st);
 printf("%s", asctime(&st));
 printf("%s", ctime(&tt));

 return 0;
}

上述程序輸出:

Tue Sep 13 16:30:00 2016
Tue Sep 13 16:30:00 2016

我們自己用struct tm構(gòu)造了一個時間,并且在執(zhí)行mktime()函數(shù)后,tm_wday屬性也會自動計算出來。

clock()

在time.h中,還有一些其他很常用的函數(shù),比如clock_t clock()函數(shù),clock_t也是一個整數(shù),是typedef long clock_t;得來的。這個函數(shù)返回程序運行到這條語句所消耗的時間。單位一般是毫秒,可以通過printf("%d\n", CLOCKS_PER_SEC);這樣確定,若輸出1000,則證明是毫秒。

我們可以方便的用它來計算程序某一段語句所消耗的時間:

#include <stdio.h>
#include <time.h>

int main()
{
 int i = 0;

 printf("CLOCKS_PER_SEC: %ld\n", CLOCKS_PER_SEC);

 long c = clock();
 while(i < 1<<30) i++;
 printf("The while loop cost %ld.\n", clock() - c);

 c = clock();
 for(i = 0; i < 1<<30; i++);
 printf("The for loop cost %ld.\n", clock() - c);

 return 0;
}

上述程序輸出:

CLOCKS_PER_SEC: 1000
The while loop cost 2234.
The for loop cost 2206.

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學習或者使用C語言能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • C++二分法在數(shù)組中查找關(guān)鍵字的方法

    C++二分法在數(shù)組中查找關(guān)鍵字的方法

    這篇文章主要介紹了C++二分法在數(shù)組中查找關(guān)鍵字的方法,涉及C++數(shù)組查找算法的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C++左值和右值學習筆記

    C++左值和右值學習筆記

    這篇文章主要為大家介紹了C++左值和右值學習筆記的重點講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • C語言實現(xiàn)乒乓球比賽

    C語言實現(xiàn)乒乓球比賽

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)乒乓球比賽,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C語言?超詳細模擬實現(xiàn)單鏈表的基本操作建議收藏

    C語言?超詳細模擬實現(xiàn)單鏈表的基本操作建議收藏

    單鏈表是后面要學的雙鏈表以及循環(huán)鏈表的基礎,要想繼續(xù)深入了解數(shù)據(jù)結(jié)構(gòu)以及C語言,我們就要奠定好這塊基石!接下來就和我一起學習吧
    2022-03-03
  • C語言實現(xiàn)經(jīng)典小游戲井字棋的示例代碼

    C語言實現(xiàn)經(jīng)典小游戲井字棋的示例代碼

    這個三子棋游戲是在學習C語言的過程中自己編寫的一個小游戲,現(xiàn)在將自己的思路(主要以流程圖形式和代碼中的注釋表達)和具體代碼以及運行結(jié)果分享出來以供大家學習參考,希望對大家有所幫助
    2022-11-11
  • C語言--數(shù)字交換題目詳解

    C語言--數(shù)字交換題目詳解

    本文通過代碼給大家介紹c語言數(shù)字交換的題目,通過實例代碼給大家講解的很詳細,具有一定的參考借鑒價值,對c語言感興趣的朋友一起看看吧
    2021-08-08
  • 淺談C++ 基類指針和子類指針的相互賦值

    淺談C++ 基類指針和子類指針的相互賦值

    下面小編就為大家?guī)硪黄獪\談C++ 基類指針和子類指針的相互賦值。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Qt+Opencv實現(xiàn)梯度矯正功能

    Qt+Opencv實現(xiàn)梯度矯正功能

    這篇文章主要為大家詳細介紹了Qt如何結(jié)合Opencv實現(xiàn)梯度矯正功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • C++實現(xiàn)簡單版通訊錄管理系統(tǒng)

    C++實現(xiàn)簡單版通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單版通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言如何實現(xiàn)順序表(數(shù)據(jù)結(jié)構(gòu))

    C語言如何實現(xiàn)順序表(數(shù)據(jù)結(jié)構(gòu))

    這篇文章主要介紹了C語言如何實現(xiàn)順序表(數(shù)據(jù)結(jié)構(gòu))問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論