1、日历时间
即UTC(Coordinated Univarsal Time)时间,自公元1970年1月1日 00:00:00这一特定时间以来经过的秒数。
2、获取当前时间和日期
#include <time.h>
time_t time(time_t *tloc);
返回值:若成功,返回时间值;若出错,返回-1
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
返回值:总是返回0
struct timeval {
time_t tv_sec; /* 秒 */
suseconds_t tv_usec; /* 微秒 */
};
说明:1、time和gettimeofday都可以获取日历时间,但gettimeofday提供更高的精度,可到微秒级
2、秒不包含微秒
3、秒和时间结构之间的转换
#include <time.h>
struct tm *gmtime(const time_t *timep);
struct tm *localtime(const time_t *timep);
返回值:若成功,返回tm结构的指针;若出错,返回NULL
time_t mktime(struct tm *tm);
返回值:若成功,返回日历时间;若出错,返回-1
struct tm {
int tm_sec; /* Seconds (0-60) */
int tm_min; /* Minutes (0-59) */
int tm_hour; /* Hours (0-23) */
int tm_mday; /* Day of the month (1-31) */
int tm_mon; /* Month (0-11) */
int tm_year; /* Year - 1900 */
int tm_wday; /* Day of the week (0-6, Sunday = 0) */
int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */
int tm_isdst; /* Daylight saving time */
};
说明:gmtime将日历时间转换为UTC时间的年、月、日、时、分、秒;
localtime将日历时间转换为本地时间;
mktime将年、月、日等信息转换为秒数
4、格式化日期和时间
#include <time.h>
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
返回值:若成功,返回存入数组的字符数;若出错,返回0
char *strptime(const char *s, const char *format, struct tm *tm);
返回值:若成功,返回上次解析字符的下一个字符的指针;若出错,返回NULL
说明:1、strftime将时间依据格式转换成字符串并保存到buf中;
strptime从字符串中分解出时间信息,保存到tm结构中
2、strftime的转换说明:
格式 | 说明 | 实例 | 格式 | 说明 | 实例 |