天天看點

UNIX環境進階程式設計讀書筆記(六)—時間和日期 (2)

4.

名稱:: gmtime/localtime
功能: transform date and time
頭檔案: #include <time.h>
函數原形:

struct tm *gmtime(const time_t *calptr)

struct tm *locatltime(const time_t calptr);

參數: calptr  time_t類型的時間
傳回值: 傳回指向tm類型的指針。

localtime和gmtime之間的差別是:localtime将月曆時間轉換成為本地時間,而gmtiem将月曆時間轉換為國際标準時間。兩個函數的傳回值類型都是tm.該類型的定義如下。

struct tm{

       int tm_sec;

       int tm_min;

       int tm_hout;

       int tm_mday;

       int tm_mon;

int tm_year;

int tm_wday;

int tm_yday;

int tm_isdst;

};

下面是一個例子,列印目前系統的本地時間和國際标準時間。

#include <stdio.h>

#include <time.h>

main()

{

time_t ti;

struct tm *gtime;

strcut tm *ltime;

if((ti=time(NULL))<0)

    perror(“error”);

gtime=(struct tm*)malloc(sizeof(struct tm));

ltime=( struct tm*)malloc(sizeof(struct tm));

if((gtime=gmtime(&ti))<0)

    perror(“error”);

if((ltime=localtime(&ti))<0)

    perror(“error”);

printf(“gmtime:%d year  %d month  %d day   %d:%d:%d/n”,gtime->tm_year,

gtime->tm_mon,gtime->tm_mday,gtime->tm_ hour,gtime->tm_min,gtime->tm_sec);

printf(“localtime:%d year  %d month  %d day   %d:%d:%d/n”,ltime->tm_year,

ltime->tm_mon,ltime->tm_mday,ltime->tm_ hour,ltime->tm_min,ltime->tm_sec);

free(gtime);

free(ltime);

}

5.

名稱:: mktime
功能: transform date and time
頭檔案: #include <time.h>
函數原形: time_t mktime(struct tm *tmptr);
參數: tmptr
傳回值: 若成功則傳回月曆時間,若出錯則傳回-1

mktime以本地時間的年,月,日等為參數,将其轉換成time_t型。是locatltime函數的功能正好相反。

6.

名稱:: ctime/asctime
功能: transform date and time
頭檔案: #include <time.h>
函數原形:

char *asctiem(const struct tm *tmptr);

char *ctime(const time_t *calptr);

參數:

tmptr   tmptr類型時間值

calptr   calptr類型時間值

傳回值: 指向以NULL結尾的字元串指針

Asctime和ctime函數産生形式的26位元組字元串,這與date(1)指令的系統預設輸出形式類似:

Wed Oct 4 07:13:20 CST 2006

7.

名稱:: strftime
功能: format date and time
頭檔案: #include <time.h>
函數原形: size_t strftime(char *s,size_t max,const char *format,const struct tm *tm);
參數:
傳回值: 若有空間則傳回存入數組的字元數,否則傳回0。

下面是應用這些函數的一個程式:

#include <time.h>

main()

{

time_t *nowtime;

struct tm *gtime;

struct tm *ltime;

char *t1;

char *t2;

time(nowtime);

gtime=gmtime(nowtime);

ltime=localtime(nowtime);

t1=ctime(nowtime);

t2=asctme(gtime);

printf(“time:%s/n”,t1);

printf(“time:%s/n”,t2);

printf(“hour:%d min:%d sec:%d/n”,gtime->tm_hour,gtime->tm_min,gtime->tm_sec);

free(nowtime);

free(gtime);

free(ltime);

}

 文章轉自:http://blog.chinaunix.net/u1/59291/showart.php?id=538558