Linux C 中獲取local日期和時間 time()&localtime()函數
阿新 • • 發佈:2018-07-25
運行 clas fine stdlib.h erro 分享圖片 mda else str
1. time() 函數
/* time - 獲取計算機系統當前的日歷時間(Calender Time) * 處理日期時間的函數都是以本函數的返回值為基礎進行運算 * * 函數原型: * #include <time.h> * * time_t time(time_t *calptr); * * 返回值: * 成功:秒數,從1970-1-1,00:00:00 * * 使用: * time_t now; * * time(&now); // == now = time(NULL);*/
2. localtime() 函數
/* * localtime - 將時間數值變換成本地時間,考慮到本地時區和夏令時標誌 * * 函數聲明: * #include <time.h> * * struct tm * localtime(const time_t *timer); * */
/* struct tm 結構 * * 此結構體空間由內核自動分配,而且不需要去釋放它 */ struct tm { int tm_sec; /*秒, 範圍從0到59 */ int tm_min; /*分, 範圍從0到59*/ int tm_hour; /*小時, 範圍從0到23 */ int tm_mday; /*一個月中的第幾天,範圍從1到31 */ int tm_mon; /*月份, 範圍從0到11 */ int tm_year; /*自 1900起的年數 */ int tm_wday; /*一周中的第幾天,範圍從0到6 */ int tm_yday; /*一年中的第幾天,範圍從0到365 */ int tm_isdst; /*夏令時 */ };
3. Demo
#include <stdio.h> #include <stdlib.h> #include<string.h> #include <errno.h> #include <time.h> #define _DATETIME_SIZE 32 // GetDate - 獲取當前系統日期 /** * 函數名稱:GetDate * 功能描述:取當前系統日期 * * 輸出參數:char * psDate - 系統日期,格式為yyymmdd * 返回結果:0 -> 成功 */ int GetDate(char * psDate){ time_t nSeconds; struct tm * pTM; time(&nSeconds); // 同 nSeconds = time(NULL); pTM = localtime(&nSeconds); /* 系統日期,格式:YYYMMDD */ sprintf(psDate,"%04d-%02d-%02d", pTM->tm_year + 1900, pTM->tm_mon + 1, pTM->tm_mday); return 0; } // GetTime - 獲取當前系統時間 /** * 函數名稱:GetTime * 功能描述:取當前系統時間 * * 輸出參數:char * psTime -- 系統時間,格式為HHMMSS * 返回結果:0 -> 成功 */ int GetTime(char * psTime) { time_t nSeconds; struct tm * pTM; time(&nSeconds); pTM = localtime(&nSeconds); /* 系統時間,格式: HHMMSS */ sprintf(psTime, "%02d:%02d:%02d", pTM->tm_hour, pTM->tm_min, pTM->tm_sec); return 0; } // GetDateTime - 取當前系統日期和時間 /** * 函數名稱:GetDateTime * 功能描述:取當前系統日期和時間 * * 輸出參數:char * psDateTime -- 系統日期時間,格式為yyymmddHHMMSS * 返回結果:0 -> 成功 */ int GetDateTime(char * psDateTime) { time_t nSeconds; struct tm * pTM; time(&nSeconds); pTM = localtime(&nSeconds); /* 系統日期和時間,格式: yyyymmddHHMMSS */ sprintf(psDateTime, "%04d-%02d-%02d %02d:%02d:%02d", pTM->tm_year + 1900, pTM->tm_mon + 1, pTM->tm_mday, pTM->tm_hour, pTM->tm_min, pTM->tm_sec); return 0; } // 測試代碼 int main() { int ret; char DateTime[_DATETIME_SIZE]; memset(DateTime, 0, sizeof(DateTime)); /* 獲取系統當前日期 */ ret = GetDate(DateTime); if(ret == 0) printf("The Local date is %s\n", DateTime); else perror("GetDate error!"); memset(DateTime, 0, sizeof(DateTime)); /* 獲取當前系統時間 */ ret = GetTime(DateTime); if(ret == 0) printf("The Local time is %s\n", DateTime); else perror("GetTime error!"); memset(DateTime, 0, sizeof(DateTime)); /* 獲取系統當前日期時間 */ ret = GetDateTime(DateTime); if(ret == 0) printf("The Local date and time is %s\n", DateTime); else perror("GetDateTime error!"); return 0; }
運行結果
4. 後記
誡子書 - 諸葛亮
夫君子之行,靜以修身,儉以養德。
非淡泊無以明誌,非寧靜無以致遠。
夫學須靜也,才須學也,非學無以廣才,非誌無以成學。
淫慢則不能勵精,險躁則不能冶性。
年與時馳,意與日去,遂成枯落,多不接世,悲守窮廬,將復何及!
Linux C 中獲取local日期和時間 time()&localtime()函數