當前位置:編程學習大全網 - 源碼下載 - c語言時間處理函數

c語言時間處理函數

C語言的標準庫函數包括壹系列日期和時間處理函數,它們都在頭文件中說明。

在頭文件中定義了三種類型:time_t,struct tm和clock_t。

下面列出了這些函數。

time_t time(time_t *timer);

double difftime(time_t time1,time_t time2);

struct tm *gmtime(const time_t *timer);

struct tm *localtime(const time_t *timer);

char *asctime(const struct tm *timeptr);

char *ctime(const time_t *timer);

size_t strftime(char *s,size_t maxsize,const char *format,const struct tm *timeptr);

time_t mktime(struct tm *timeptr);

clock_t clock(void);

具體應用舉例

asctime(將時間和日期以字符串格式表示)

相關函數

time,ctime,gmtime,localtime

表頭文件

#i nclude

定義函數

char * asctime(const struct tm * timeptr);

函數說明

asctime()將參數timeptr所指的tm結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果以字符串形態返回。

此函數已經由時區轉換成當地時間,字符串格式為:"Wed Jun 30 21:49:08 1993\n"

返回值

若再調用相關的時間日期函數,此字符串可能會被破壞。此函數與ctime不同處在於傳入的參數是不同的結構。

附加說明

返回壹字符串表示目前當地的時間日期。

範例

#i nclude

main()

{

time_t timep;

time (&timep);

printf("%s",asctime(gmtime(&timep)));

}

執行

Sat Oct 28 02:10:06 2000

 

ctime(將時間和日期以字符串格式表示)

相關函數

time,asctime,gmtime,localtime

表頭文件

#i nclude

定義函數

char *ctime(const time_t *timep);

函數說明

ctime ()將參數timep所指的time_t結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果以字符串形態返回。

此函數已經由時區轉換成當地時間,字符串格式為"Wed Jun 30 21 :49 :08 1993\n"。若再調用相關的時間日期函數,此字符串可能會被破壞。

返回值

返回壹字符串表示目前當地的時間日期。

範例

#i nclude

main()

{

time_t timep;

time (&timep);

printf("%s",ctime(&timep));

}

執行

Sat Oct 28 10 : 12 : 05 2000

 

gettimeofday(取得目前的時間)

相關函數

time,ctime,ftime,settimeofday

表頭文件

#i nclude

#i nclude

定義函數

int gettimeofday ( struct timeval * tv , struct timezone * tz )

函數說明

gettimeofday()會把目前的時間有tv所指的結構返回,當地時區的信息則放到tz所指的結構中。

timeval結構定義為:

struct timeval{

long tv_sec; /*秒*/

long tv_usec; /*微秒*/

};

timezone 結構定義為:

struct timezone{

int tz_minuteswest; /*和Greenwich 時間差了多少分鐘*/

int tz_dsttime; /*日光節約時間的狀態*/

};

上述兩個結構都定義在/usr/include/sys/time.h。tz_dsttime 所代表的狀態如下

DST_NONE /*不使用*/

DST_USA /*美國*/

DST_AUST /*澳洲*/

DST_WET /*西歐*/

DST_MET /*中歐*/

DST_EET /*東歐*/

DST_CAN /*加拿大*/

DST_GB /*大不列顛*/

DST_RUM /*羅馬尼亞*/

DST_TUR /*土耳其*/

DST_AUSTALT /*澳洲(1986年以後)*/

返回值

成功則返回0,失敗返回-1,錯誤代碼存於errno。附加說明EFAULT指針tv和tz所指的內存空間超出存取權限。

範例

#i nclude

#i nclude

main(){

struct timeval tv;

struct timezone tz;

gettimeofday (&tv , &tz);

printf("tv_sec; %d\n", tv,.tv_sec) ;

printf("tv_usec; %d\n",tv.tv_usec);

printf("tz_minuteswest; %d\n", tz.tz_minuteswest);

printf("tz_dsttime, %d\n",tz.tz_dsttime);

}

執行

tv_sec: 974857339

tv_usec:136996

tz_minuteswest:-540

tz_dsttime:0

 

gmtime(取得目前時間和日期)

相關函數

time,asctime,ctime,localtime

表頭文件

#i nclude

定義函數

struct tm*gmtime(const time_t*timep);

函數說明

gmtime()將參數timep 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果由結構tm返回。

結構tm的定義為

struct tm

{

int tm_sec;

int tm_min;

int tm_hour;

int tm_mday;

int tm_mon;

int tm_year;

int tm_wday;

int tm_yday;

int tm_isdst;

};

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 日光節約時間的旗標

此函數返回的時間日期未經時區轉換,而是UTC時間。

返回值

返回結構tm代表目前UTC 時間

範例

#i nclude

main(){

char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

time_t timep;

struct tm *p;

time(&timep);

p=gmtime(&timep);

printf("%d%d%d",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);

printf("%s%d;%d;%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);

}

執行

2000/10/28 Sat 8:15:38

 

localtime(取得當地目前時間和日期)

相關函數

time, asctime, ctime, gmtime

表頭文件

#i nclude

定義函數

struct tm *localtime(const time_t * timep);

函數說明

localtime()將參數timep所指的time_t結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果由結構tm返回。

結構tm的定義請參考gmtime()。此函

數返回的時間日期已經轉換成當地時區。

返回值

返回結構tm代表目前的當地時間。

範例

#i nclude

main(){

char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

time_t timep;

struct tm *p;

time(&timep);

p=localtime(&timep); /*取得當地時間*/

printf ("%d%d%d ", (1900+p->tm_year),( l+p->tm_mon), p->tm_mday);

printf("%s%d:%d:%d\n", wday[p->tm_wday],p->tm_hour, p->tm_min, p->tm_sec);

}

執行

2000/10/28 Sat 11:12:22

 

mktime(將時間結構數據轉換成經過的秒數)

相關函數

time,asctime,gmtime,localtime

表頭文件

#i nclude

定義函數

time_t mktime(strcut tm * timeptr);

函數說明

mktime()用來將參數timeptr所指的tm結構數據轉換成從公元1970年1月1日0時0分0 秒算起至今的UTC時間所經過的秒數。

返回值

返回經過的秒數。

範例

/* 用time()取得時間(秒數),利用localtime()

轉換成struct tm 再利用mktine()將struct tm轉換成原來的秒數*/

#i nclude

main()

{

time_t timep;

strcut tm *p;

time(&timep);

printf("time() : %d \n",timep);

p=localtime(&timep);

timep = mktime(p);

printf("time()->localtime()->mktime():%d\n",timep);

}

執行

time():974943297

time()->localtime()->mktime():974943297

 

settimeofday(設置目前時間)

相關函數

time,ctime,ftime,gettimeofday

表頭文件

#i nclude

#i nclude

定義函數

int settimeofday ( const struct timeval *tv,const struct timezone *tz);

函數說明

settimeofday()會把目前時間設成由tv所指的結構信息,當地時區信息則設成tz所指的結構。詳細的說明請參考gettimeofday()。

註意,只有root權限才能使用此函數修改時間。

返回值

成功則返回0,失敗返回-1,錯誤代碼存於errno。

錯誤代碼

EPERM 並非由root權限調用settimeofday(),權限不夠。

EINVAL 時區或某個數據是不正確的,無法正確設置時間。

 

time(取得目前的時間)

相關函數

ctime,ftime,gettimeofday

表頭文件

#i nclude

定義函數

time_t time(time_t *t);

函數說明

此函數會返回從公元1970年1月1日的UTC時間從0時0分0秒算起到現在所經過的秒數。如果t 並非空指針的話,

此函數也會將返回值存到t指針所指的內存。

返回值

成功則返回秒數,失敗則返回((time_t)-1)值,錯誤原因存於errno中。

範例

#i nclude

mian()

{

int seconds= time((time_t*)NULL);

printf("%d\n",seconds);

}

Date and Time Functions: <time.h>

The header <time.h> declares types and functions for manipulating date and time. Some functions process local time,

which may differ from calendar time, for example because of time zone. clock_t and time_t are arithmetic types

representing times, and struct tm holds the components

of a calendar time:

int tm_sec; seconds after the minute (0,61)

int tm_min; minutes after the hour (0,59)

int tm_hour; hours since midnight (0,23)

int tm_mday; day of the month (1,31)

int tm_mon; months since January (0,11)

int tm_year; years since 1900

int tm_wday; days since Sunday (0,6)

int tm_yday; days since January 1 (0,365)

int tm_isdst; Daylight Saving Time flag

tm_isdst is positive if Daylight Saving Time is in effect, zero if not, and negative if the information is not available.

clock_t clock(void)

clock returns the processor time used by the program since the beginning of execution, or -1 if unavailable.

clock()/CLK_PER_SEC is a time in

seconds.

time_t time(time_t *tp)

time returns the current calendar time or -1 if the time is not available. If tp is not NULL,

the return value is also assigned to *tp.

double difftime(time_t time2, time_t time1)

difftime returns time2-time1 expressed in seconds.

time_t mktime(struct tm *tp)

mktime converts the local time in the structure *tp into calendar time in the same representation used by time.

The components will have values

in the ranges shown. mktime returns the calendar time or -1 if it cannot be represented.

The next four functions return pointers to static objects that may be overwritten by other calls.

char *asctime(const struct tm *tp)

asctime*tp into a string of the form

Sun Jan 3 15:14:13 1988\n\0

char *ctime(const time_t *tp)

ctime converts the calendar time *tp to local time; it is equivalent to

asctime(localtime(tp))

struct tm *gmtime(const time_t *tp)

gmtime converts the calendar time *tp into Coordinated Universal Time (UTC). It returns NULL if UTC is not available.

The name gmtime has historical significance.

struct tm *localtime(const time_t *tp)

localtime converts the calendar time *tp into local time.

size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)

strftime formats date and time information from *tp into s according to fmt, which is analogous to a printf format.

Ordinary characters (including the terminating '\0') are copied into s. Each %c is replaced as described below,

using values appropriate for the local environment.

No more than smax characters are placed into s. strftime returns the number of characters, excluding the '\0',

or zero if more than smax characters were produced.

%a abbreviated weekday name.

%A full weekday name.

%b abbreviated month name.

%B full month name.

%c local date and time representation.

%d day of the month (01-31).

%H hour (24-hour clock) (00-23).

%I hour (12-hour clock) (01-12).

%j day of the year (001-366).

%m month (01-12).

%M minute (00-59).

%p local equivalent of AM or PM.

%S second (00-61).

%U week number of the year (Sunday as 1st day of week) (00-53).

%w weekday (0-6, Sunday is 0).

%W week number of the year (Monday as 1st day of week) (00-53).

%x local date representation.

%X local time representation.

%y year without century (00-99).

%Y year with century.

%Z time zone name, if any.

%% %

  • 上一篇:終極主源代碼。
  • 下一篇:有什麽好玩的網遊
  • copyright 2024編程學習大全網