Linux C 中獲取local日期和時間 time()&localtime()函式
阿新 • • 發佈:2018-12-11
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; }
執行結果