1. 程式人生 > >Linux C 中獲取local日期和時間 time()&localtime()函數

Linux C 中獲取local日期和時間 time()&localtime()函數

運行 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()函數