Linux中存在三种形式的时间:

日历时间:

指的是从1970年1月1日0时0分0秒开始到目前时间点所经历的秒数

本地时间:

当地时间,北京时间

格林威治时间:

世界标准时间

linux系统时间同步命令 linux获取当前系统时间的函数 第1张

第一个函数:获取日历时间,time();

函数头文件:

#include <time.h>

函数格式:

time_t time(time_t c);

返回值:

time_t:以秒的格式返回当前时间到1970年1月1日0时0分0秒中间过了多少秒;

参数:一般填NULL,如果是一个指针,则表示返回值存储在对应的空间中;

第二个函数:获取指定的时间

linux系统时间同步命令 linux获取当前系统时间的函数 第2张

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:第二个参数的返回值结构体指针