1.时间计量系统
时间计量系统有:世界时(UT)unix系统时间,国际原子时(TAI),格林尼治标准时(GMT),协调世界时(UTC)等等。
上海时间比UTC时间早8小时
UTC时间是1999年1月1日00:00
上海时间是1999年1月1日08:00
2.UNIX系统时间值
UNIX系统使用2种不同的时间值
1.月历时间以协调世界时(UTC,CoordinatedUniversalTime)计量绝对时间,用于记录文件更改时间等系统基本数据类型time_t2.进程时间又称CPU时间相对时间,用于测度进程使用CPU资源系统基本数据类型clock_t3.时间和日期类库
参考manpage
#include
void tzset(void);
time_t time(time_t *calptr);
time_t mktime(struct tm *tmptr);
struct tm *gmtime(const time_t *calptr);
struct tm *localtime(const time_t *calptr);
size_t strftime(char *restrict buf, size_t maxsize, const char *restrict format, const struct tm *restrict tmptr);
siet_t strftime_l(char *restrict buf, size_t maxsize, const char *restrict format, const struct tm *restrict tmptr, locale_t locale);
#include
int clock_gettime(clockid_t clock_id, struct timespec *tsp);
int clock_settime(clockid_t clock_id, const struct timespec *tsp);
int clock_getres(clockid_t clock_id, struct timespec *tsp);
int gettimeofday(struct timeval *restrict tp, void *restrict tzp);
4.示例
#include
#include
#include

#include
#include
int main(int argc, char const *argv[])
{
time_t cal_time; // 日历时间(s)
struct timeval val_time; // 日历时间(ns)
struct tm *brk_time; // 分解时间
struct timespec tsp;
char buf[128];
int rtn;
time(&cal_time);
printf("cal_time = %ldsn", cal_time);
gettimeofday(&val_time, NULL);
printf("val_time = %lds, %dnsn", val_time.tv_sec, val_time.tv_usec);
brk_time = gmtime(&cal_time);
printf("UTC_time = %d-%d-%d %d:%d:%dn",
brk_time->tm_year + 1900, brk_time->tm_mon + 1, brk_time->tm_mday,
brk_time->tm_hour, brk_time->tm_min, brk_time->tm_sec);
printf("cal_time1 = %ldsn", mktime(brk_time));
brk_time = localtime(&cal_time);

printf("Local_time = %d-%d-%d %d:%d:%dn",
brk_time->tm_year + 1900, brk_time->tm_mon + 1, brk_time->tm_mday,
brk_time->tm_hour, brk_time->tm_min, brk_time->tm_sec);
printf("cal_time2 = %ldsn", mktime(brk_time));
rtn = strftime(buf, 128, "year = %Y month = %B day = %d week = %A", brk_time);
printf("rtn =%d %sn",rtn, buf);
strcpy(buf,"2001-02-03 4:5:6");
strptime(buf, "%F %T", brk_time);
printf("str_time = %d-%d-%d %d:%d:%dn",
brk_time->tm_year + 1900, brk_time->tm_mon + 1, brk_time->tm_mday,
brk_time->tm_hour, brk_time->tm_min, brk_time->tm_sec);
return 0;
}
1.输出结果
cal_time = 1468111161s
val_time = 1468111161s, 719666ns
UTC_time = 2016-7-10 0:39:21
cal_time1 = 1468082361s
Local_time = 2016-7-10 8:39:21
cal_time2 = 1468111161s
rtn =47 year = 2016 month = July day = 10 week = Sunday
str_time = 2001-2-3 4:5:6
2.剖析time函数复印1970年至今的秒数unix系统时间,且是以本地时间估算的gettimeofday函数同理,并且具有更高的精度linux系统入门学习,毫秒级从分解时间可以看见linux 安装,当地时间比标准时间快了8个小时可以用指定的字符串格式设置时间5.参考
《UNIX环境中级编程》1.10、6.10