簡單時間編程

時間概念的定義:
(1)UTC 世界標準時間(協調世界時):中國內地的時間爲 UTC+8
(2)GMT 格林威治標準時間:等於UTC。這個名字的由來是因爲本初子午線(零時區)經過英國的格林威治區。
(3)日曆時間:從一個標準時間點到此時的時間經過的秒數。這個標準時間在Linux編譯系統中被選定爲:1970年1月1日00:00:00
  很多編程語言起源於UNIX系統,而UNIX認爲1970年1月1日0點是時間紀元,這個時間點專業一點叫“epoch”。所以就····
日期時間函數:
需要標準庫的頭文件<time.h>
先來了解這個頭文件裏邊定義幾個重要的數據類型有:
第一個:typedef long time_t; time_t表示的是日曆時間,他是有符號長整型,能表示的正整數的最大值爲2^31=2147483648,也就是說最多就裝得下2147483648秒的時間,折算成年大概就68年多一點,網上有資料說到2038年1月18日19:14:07,time_t類型的值就會填滿,到了那個時間點,想想就激動。

第二個:我們發現上面這種日曆時間實用性不大,給我們那麼一個時間完全無法直接知曉現在是何年馬月。於是struct tm結構體就來了。

struct tm {
int tm_sec;  //秒
int tm_min;  //分
int tm_hour; //時
int tm_mday; //天
int tm_mon;  //月
int tm_year; //年
int tm_wday; //星期幾
int tm_yday; //一年中的第幾天
int tm_isdst;//夏令時標識符
};

struct tm也叫做分解時間,就是根據time_t分解得到的。
具體操作函數:
(1)time():獲取日曆時間
函數原型:time_t time(time_t *t);
參數分析:指針t指向內存,該內存用來存儲函數所得日曆時間,不需要存儲時指定爲NULL
函數返回:日曆時間

time_t時間--->struct tm時間:
(2)localtime():取得當地當前的時間日期,裏邊會涉及時區轉換,並將該時間轉換成“年月日時分秒”的格式存放。
函數原型:struct tm *localtime(const time_t *timep);
參數分析:timep指針指向time_t類型的日曆時間
函數返回:struct tm結構的本地時間
(3)gmtime():取得當前的時間日期,注意這個函數返回時間是格林威治時間是沒有經過時區轉換的。其他和localtime()函數一樣。

struct tm時間-->字符串表示
(4)asctime():將參數timeptr所指的tm結構中的信息(可以是經過或未經過時區轉換的)轉換字符串形式。
函數原型:char *asctime(const struct tm *timetpr);


time_t時間-->字符串表示
(5)ctime():將time_t日曆時間以字符串的形式輸出,輸出的時間是有經過時區轉換的。
函數原型:char *ctime(const time_t *timep);
代碼時間:

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

int main(void)
{
    struct tm *ptr,*ptr1; /* 用於保存兩種轉化後的時間 */
    time_t cal_tm;        /* 用於保存日曆時間 */
    
    cal_tm = time(NULL);  /* 獲取日曆時間 */
    
    ptr=localtime(<);   /* 將日曆時間轉換成本地時間 */
    printf("%s\n",asctime(ptr));
    
    ptr1=gmtime(<);     /* 將日曆時間轉換成格林威治時間 */
    printf("%s\n",asctime(ptr1));
    
    printf("%s\n",ctime(<));
    return 0;
}

實驗結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章