Linux中存在三种形式的时间:
日历时间:
指的是从1970年1月1日0时0分0秒开始到目前时间点所经历的秒数
本地时间:
当地时间,北京时间
格林威治时间:
世界标准时间
第一个函数:获取日历时间,time();
函数头文件:
#include <time.h>
函数格式:
time_t time(time_t c);
返回值:
time_t:以秒的格式返回当前时间到1970年1月1日0时0分0秒中间过了多少秒;
参数:一般填NULL,如果是一个指针,则表示返回值存储在对应的空间中;
第二个函数:获取指定的时间
1,struct tm *gmtime(const time_t *timep);
2,struct tm *localtime(const time_t *timep);
从名字可以看出来,一个是获取格林尼治时间,一个是获取本地时间;参数都是传time_t类型的指针,所以第一个函数可以说是时间操作的基础函数了;两个函数的返回值是一个结构体指针;该结构体的内容如下:
struct tm {
int tm_sec; /* 秒 (0-60) */
int tm_min; /* 分 (0-59) */
int tm_hour; /* 时 (0-23) */
int tm_mday; /* 每月几号 (1-31) */
int tm_mon; /* 月份 (0-11) */
int tm_year; /*到1900年共有多少年 */
int tm_wday; /* 周几 (0-6, Sunday = 0) */
int tm_yday; /* 一年中的第几天 (0-365, 1 Jan = 0) */
int tm_isdst; /* 夏令时间 */
};
第三个函数:获取字符串时间
char *asctime(const struct tm *tm);
该函数的作用是以字符串的形式返回时间,它的参数时第二个函数的返回值类型的指针;
第四个函数:获取指定格式时间
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
函数的参数:
char *s, size_t max:前两个参数定义一个保存获取到时间的字符串数组,
一个是该数组指针,一个是保存到数组的最大字节数;
const char *format:时间保存的格式:
%a 缩写的星期几名称 Sun
%A 完整的星期几名称 Sunday
%b 缩写的月份名称 Mar
%B 完整的月份名称 March
%c 日期和时间表示法 Sun Aug 19 02:56:02 2012
%d 一月中的第几天(01-31) 19
%H 24 小时格式的小时(00-23) 14
%I 12 小时格式的小时(01-12) 05
%j 一年中的第几天(001-366) 231
%m 十进制数表示的月份(01-12) 08
%M 分(00-59) 55
%p AM 或 PM 名称 PM
%S 秒(00-61) 02
%U 一年中的第几周,以第一个星期日作为第一周的第一天(00-53) 33
%w 十进制数表示的星期几,星期日表示为 0(0-6) 4
%W 一年中的第几周,以第一个星期一作为第一周的第一天(00-53) 34
%x 日期表示法 08/19/12
%X 时间表示法 02:50:06
%y 年份,最后两个数字(00-99) 01
%Y 年份 2012
%Z 时区的名称或缩写 CDT
%% 一个 % 符号 %
const struct tm *tm:第二个参数的返回值结构体指针