日期與時間函數<time.h>
頭文件<time.h>中說明了一些用於處理日期和時間的類型和函數。其中的一部分函數用於處理當地時間,因為時區等原因,當地時間與日歷時間可能不相同。clock_t和time_t是兩個用於表示時間的算術類型,而struct tm則用於存放日歷時間的各個成分。tm的各個成員的用途及取值范圍如下:
int tm_sec; /* 秒,0~61 */
int tm_min; /* 分,0~59 */
int tm_hour; /* 時,0~23 */
int tm_mday; /* 日,1~31 */
int tm_mon; /* 月(從1月開始),0~11 */
int tm_year; /* 年(從1900年開始) */
int tm_wday; /* 星期(從周日開始),0~6 */
int tm_yday; /* 天數(從1月1日開始),0~365 */
int tm_isdst; /* 夏令時標記 */
其中,tm_isdst在使用夏令時時其值為正,在不使用夏令時時其值為0,如果該信息不能使用,其值為負。
1 clock
#include <time.h>
clock_t clock(void);
返回程序自開始執行到目前為止所占用的處理機時間。如果處理機時間不可使用,那么返回-1。clock()/CLOCKS_PER_SEC是以秒為單位表示的時間。
2 time
#include <time.h>
time_t time(time_t *tp);
返回當前日歷時間。如果日歷時間不能使用,則返回-1。如果tp不為NULL,那么同時把返回值賦給*tp。
3 difftime
#include <time.h>
double difftime(time_t time2, time_t time1);
返回time2-time1的值(以秒為單位)。
4 mktime
#include <time.h>
time_t mktime(struct tm *tp);
將結構*tp中的當地時間轉換為time_t類型的日歷時間,並返回該時間。如果不能轉換,則返回-1。
5 asctime
#include <time.h>
char *asctime(const struct tm *tp);
將結構*tp中的時間轉換成如下所示的字符串形式:
day month date hours:minutes:seconds year\n\0
如:
Fri Apr 15 15:14:13 2005\n\0
返回指向該字符串的指針。字符串存儲在可被其他調用重寫的靜態對象中。
6 ctime
#include <time.h>
char *ctime(const time_t *tp);
將*tp中的日歷時間轉換為當地時間的字符串,並返回指向該字符串指針。字符串存儲在可被其他調用重寫的靜態對象中。等價於如下調用:
asctime(localtime(tp));
7 gmtime
#include <time.h>
struct tm *gmtime(const time_t *tp);
將*tp中的日歷時間轉換成struct tm結構形式的國際標准時間(UTC),並返回指向該結構的指針。如果轉換失敗,返回NULL。結構內容存儲在可被其他調用重寫的靜態對象中。
8 localtime
#include <time.h>
struct tm *localtime(const time_t *tp);
將*tp中的日歷時間轉換成struct tm結構形式的本地時間,並返回指向該結構的指針。結構內容存儲在可被其他調用重寫的靜態對象中。
9 strftime
#include <time.h>
size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp);
根據fmt的格式說明把結構*tp中的日期與時間信息轉換成指定的格式,並存儲到s所指向的數組中,寫到s中的字符數不能多於smax。函數返回實際寫到s中的字符數(不包括'\0');如果產生的字符數多於smax,則返回0。
fmt類似於printf()中的格式說明,它由0個或多個轉換規格說明與普通字符組成。普通字符原封不動的拷貝到s中,每個%c按照下面所描述的格式用與當地環境相適應的值來替換。轉換規格列表如下:
格式 |
說明 |
%a |
一星期中各天的縮寫名 |
%A |
一星期中各天的全名 |
%b |
縮寫月份名 |
%B |
月份全名 |
%c |
當地時間和日期表示 |
%d |
用整數表示的一個月中的第幾天(01~31) |
%H |
用整數表示的時(24小時制,00~23) |
%I |
用整數表示的時(12小時制,01~12) |
%j |
用整數表示的一年中各天(001~366) |
%m |
用整數表示的月份(01~12) |
%M |
用整數表示的分(00~59) |
%p |
與AM/PM對應的當地表示方法 |
%S |
用整數表示的秒(00~61) |
%U |
用整數表示一年中的星期數(00~53,將星期日看作為每周的第一天) |
%w |
用整數表示一周中的各天(0~6,星期日為0) |
%W |
用整數表示一年中的星期數(00~53,將星期一看作為每周的第一天) |
%x |
當地日期表示 |
%X |
當地時間表示 |
%y |
不帶公元的年(00~99) |
%Y |
完整年份表示 |
%Z |
時區名字(可獲得時) |
%% |
%本身 |