Thinking needs constant practice with enthusiam;enthusiasm generates interest and sustains thingking.--------思考需要在熱情中不斷進行。熱情會激發興趣,使思考繼續。
時間的觀念很重要,那我們如何在程序中獲取格式化的時間呢?
下面小黑列舉本人常用的2種函數,原理是一樣的。
1, 函數介紹
localtime()
#include<time.h>
struct tm *localtime(const time_t *clock);
說明
:
此函數獲得的tm結構體的時間是日曆時間。把從1970-1-1零點零分到當前時間系統所偏移的秒數時間轉換爲本地時間.:返回值
:
返回指向tm 結構體的指針.
tm結構體是time.h中定義的用於分別存儲時間的各個量(年月日等)的結構體.
gmtime()
struct tm *gmtime(const time_t *clock);
這個函數和上面的函數基本一樣,就是hour沒有經過時區轉換,需要自己加8
結構體
- 下面是結構體
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
//int tm_sec 代表目前秒數,正常範圍爲0-59,但允許至61秒
//int tm_min 代表目前分數,範圍0-59
//int tm_hour 從午夜算起的時數,範圍爲0-23
//int tm_mday 目前月份的日數,範圍01-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 日光節約時間的旗標
2, 代碼演示
#include <time.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
//因爲返回的星期是0到6, 這不符合我們日常習慣,所以我們轉換一下
time_t timep;
struct tm *p;
time(&timep);
p = localtime(&timep); /*取得當地時間*/
// p = gmtime(&timep); //如果使用這個需要p->tm_hour+8
printf ("%d-%d-%d %s %02d:%02d:%02d", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday, wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec );
printf("\n");
return 0;
}
另外可以將得到的時間打包然後放入數組中
#include <time.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
char data_time[50];
time_t timep;
struct tm *p;
time(&timep);
p = localtime(&timep); /*取得當地時間*/
// p = gmtime(&timep);
printf ("%d-%d-%d %s %02d:%02d:%02d", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday, wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec );
printf("\n");
snprintf(data_time, 50, "%d-%02d-%02d %s %02d:%02d:%02d", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday, wday[p->tm_wday], (p->tm_hour), p->tm_min, p- >tm_sec);
printf("data_time: %s\n", data_time);
return 0;
}