-
与时间相关的结构:
-
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;从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;干啥用的??? */ }; struct timeval { time_t tv_sec; /* seconds (秒)*/ suseconds_t tv_usec; /* microseconds(微秒) */ }; struct timezone { int tz_minuteswest; /* minutes west of Greenwich;格林威治时间往西方的时差 */ int tz_dsttime; /* type of DST correction; 时间的修正方式 */ };
-
时间与时区:
-
整个地球分为24个时区,每个时区都有自己的本地时间。
-
UTC时间与本地时间:
-
UTC时间是世界协调时间。
-
本地时间 = UTC时间 + 时区差
-
-
时区差:东为正,西为负。东八区的时区差即为+0800。
-
Unix时间戳:从1970-01-01 00:00:00开始计算至今的秒数。
-
-
与时间相关的函数:
-
time
-
作用: 返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数
-
特点:与时区无关。
-
-
gmtime
-
作用:将time()返回的秒数,转换至struct tm结构中。
-
特点:不进行时区转换。
-
-
ctime
-
作用:将time()返回的秒数,转换成可读的时间字符串。
-
特点:已进行时区转换。
-
-
asctime
-
作用:将gmtime返回的struct tm,转换成可读的时间字符串。
-
特点:不进行时区转换。
-
-
gettimeofday
-
作用:
-
struct timeval: 获取自1970-01-01 00:00:00至今的描述,其值与time()的返回值相等。
-
struct timezone: 返回当前的时区信息。tz_minuteswest表示与UTC +0000相差的分钟数,其值为-480时,表示东八区。
-
-
特点:秒数与时区无关。
-
-
localtime
-
作用:将time()返回的秒数,转换至struct tm结构中。
-
特点:已进行时区转换。
-
-
mktime
-
作用:将struct tm结构,转换至秒数。
-
特点:已进行时区转换。
-
-
settimeofday
-
作用:设置当前的时间和时区。
-
特点:
-
只有root用户有权限执行。
-
只对gettimeofday()有影响,对localtime()无影响。
-
-
-
strftime
-
将struct tm结构中的时间,根据格式化字符串,转换为可读的时间字符串。
-
格式化字符串:
-
%a: 英文单词中星期几的缩写版。如:星期三,表示为"Wed"。
-
%A: 英文单词中星期几的完整版。如:星期三,表示为"Wednesday"。
-
%b: 英文单词中月份的缩写版。如:11月,表示为"Nov"。
-
%B: 英文单词中月份的缩写版。如:11月,表示为"November"。
-
%c: 格式化的时间字符串。如:2018-11-28 10:13:40,表示为"Wed Nov 28 10:13:40 2018"。
-
%F: 日期格式为yyyy-mm-dd,与%Y:%m:%d作用相同。如:2018-11-28。
-
%X: 时间格式为hh:mm:ss。如:10:13:40。
-
%j: 一年中的第几天,范围:001-366.
-
%W: 一年中的第几周,范围:00-53.
-
%Y: 日期中的年,如:2018。
-
%m: 日期中的月,范围:00-12。
-
%d: 日期中的天,范围:01-31。
-
%H: 小时,范围:00-24。
-
%M: 分钟,范围:00-59。
-
%S: 秒, 范围:00-60。
-
-
-
-
与时间相关的文件:
-
/etc/localtime:
-
查看该文件的内容,使用zdump /etc/localtime命令。
-
该文件中记录了当前时区的时间。
-
通过将/usr/share/zoneinfo目录下某个时区的文件替换/etc/localtime文件,可以将当前时区修改为对应文件的时区。
-
-
-
与时间有关的命令:
-
date
-
hwclock(需要root权限)
-