国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言中時間的基本用法小結

2020-01-26 14:16:16
字體:
來源:轉載
供稿:網友

前言

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

time_t和struct tm

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

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

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

它一個結構體,我們就先看一下它的成員信息,一個struct tm類型包括以下成員:

  • int tm_year表示時間的年份,它的值從1900年開始算起,也就是說當其值為1的時候,表示的是1901年。因為time_t類型表示的時間范圍不早于1970年,所以這個值通常不小于70。
  • int tm_mon表示時間是幾月,它的值是0到11,0表示的是一月,而11表示的是12月。
  • int tm_mday表示時間是當前月的幾號,其值的范圍自然是根據月份不同也不相同。
  • 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類型構造成struct tm類型呢?用struct tm *localtime(const time_t *_v)函數即可,注意參數和返回值都是指針類型。

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

上述程序輸出:

The year is 2016.

mktime()

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

那么如何輸出時間呢?可以簡單的使用char *ctime(time_t *_v)函數和char *asctime(struct tm *_v)函數,要注意的是返回的字符串結尾包含換行符/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 2016Tue Sep 13 16:30:00 2016

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

clock()

在time.h中,還有一些其他很常用的函數,比如clock_t clock()函數,clock_t也是一個整數,是typedef long clock_t;得來的。這個函數返回程序運行到這條語句所消耗的時間。單位一般是毫秒,可以通過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: 1000The while loop cost 2234.The for loop cost 2206.

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 崇左市| 龙江县| 仙桃市| 安庆市| 碌曲县| 交城县| 博罗县| 石门县| 营山县| 汉沽区| 黎平县| 洛扎县| 腾冲县| 扶绥县| 大同市| 岢岚县| 余庆县| 永春县| 台北市| 咸丰县| 毕节市| 库车县| 宜宾市| 察雅县| 循化| 余江县| 农安县| 扬中市| 鹤峰县| 开化县| 莱州市| 乐平市| 丰城市| 开平市| 桑植县| 新闻| 张家界市| 信宜市| 乐山市| 共和县| 巴马|