Linux獲取時間函數介紹

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;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章