C語言 取得系統時間
C語言 取得時間的函數庫是 time.h 本文只會用到兩個資料型態
從1900年到現在的秒數
typedef long time_t;
時間結構
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; /* 從1/1開始過幾天: 0-365 */
int tm_isdst; /* +1 日光節約時間, 0 沒有節約時間, * -1 不知道 */
};
這個結構有幾個地方要需要注意
- mon 月份: 一月是 0 , 所以使用時必須要 + 1
- year 年: 這個年是從1900年開始算起, 使用時要 + 1900
- wday 星期: 從周日開始, 週日顯示 0
- tm_hour 時: 由於台灣的時區是 UTC+8 , 所以要加上8小時
測試程式
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main(int argc, char **args)
{
time_t tim;
struct tm *p;
time(&tim);
p = gmtime(&tim);
printf("%d年 %d月 %d日\n%d點 %d分 %d秒\n星期%d 今年第%d天\n",
p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,
p->tm_hour+8, p->tm_min, p->tm_sec,
p->tm_wday, p->tm_yday);
return EXIT_SUCCESS;
}
結果
2017年 8月 11日
17點 18分 31秒
星期5 今年第222天