linux 标准时间,linux标准时间函数小结

############################################################################

struct tm {

int tm_sec; /* 秒–取值区间为[0,59] */

int tm_min; /* 分 - 取值区间为[0,59] */

int tm_hour; /* 时 - 取值区间为[0,23] */

int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */

int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */

int tm_year; /* 年份,其值从1900开始 */

int tm_wday; /* 星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */

int tm_yday; /* 从每年的1月1日开始的天数–取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */

int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/

long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/

const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/

};

############################################################################

struct tm st

{

st.tm_year = sysTime.year - 1900;

st.tm_mon = sysTime.month- 1;

st.tm_mday = sysTime.day;

st.tm_hour = sysTime.hour;

st.tm_min = sysTime.minute;

st.tm_sec = sysTime.second;

st.tm_isdst = 0;

}

1、mktime

#include

将时间转换为自1970年1月1日以来逝去时间的秒数,发生错误时返回-1.

mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。

time_t mktime(struct tm * timeptr);

2、localtime

localtime是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间,

而gmtime函数转换后的时间没有经过时区变换,是UTC时间

clock = time(NULL);

struct tm *localtime(const time_t *clock); ///将本地时间————>struct tm(年、月、日)

3、gmtime

time= time(NULL);

struct tm *gmtime(const time_t *time);

把日期和时间转换为格林威治(GMT)时间的函数。将参数time 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

4、ctime

功 能: 把日期和时间转换为字符串

time = time(NULL);

char *ctime(const time_t *time);

5、asctime

把timeptr指向的tm结构体中储存的时间转换为字符串字符串格式返回,

格式为:Www Mmm dd hh:mm:ss yyyy。其中Www为星期;Mmm为月份;dd为日;hh为时;mm为分;ss为秒;yyyy为年份。

rawtime = time ( &rawtime );

timeinfo = localtime ( &rawtime );

printf ( "The current date/time is: %s", asctime (timeinfo) );

6、strftime

函数功能:将时间格式化,或者说:格式化一个时间字符串。

头文件:time.h

函数原型:我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:

1

2

3

4

5

6

size_tstrftime(

char*strDest,

size_tmaxsize,

constchar*format,

conststructtm*timeptr

);

参数说明:

我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符

数。

函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中。格式化命令说明串strDest中各种日期和时间信息的确切表示方法。

格式串中的其他字符原样放进串中。格式命令列在下面,它们是区分大小写的。

%a 星期几的简写

%A 星期几的全称

%b 月份的简写

%B 月份的全称

%c 标准的日期的时间串

%C 年份的前两位数字

%d 十进制表示的每月的第几天

%D 月/天/年

%e 在两字符域中,十进制表示的每月的第几天

%F 年-月-日

%g 年份的后两位数字,使用基于周的年

%G 年份,使用基于周的年

%h 简写的月份名

%H 24小时制的小时

%I 12小时制的小时

%j 十进制表示的每年的第几天

%m 十进制表示的月份

%M 十时制表示的分钟数

%n 新行符

%p 本地的AM或PM的等价显示

%r 12小时的时间

%R 显示小时和分钟:hh:mm

%S 十进制的秒数

%t 水平制表符

%T 显示时分秒:hh:mm:ss

%u 每周的第几天,星期一为第一天 (值从1到7,星期一为1)

%U 第年的第几周,把星期日作为第一天(值从0到53)

%V 每年的第几周,使用基于周的年

%w 十进制表示的星期几(值从0到6,星期天为0)

%W 每年的第几周,把星期一做为第一天(值从0到53)

%x 标准的日期串

%X 标准的时间串

%y 不带世纪的十进制年份(值从0到99)

%Y 带世纪部分的十制年份

%z,%Z 时区名称,如果不能得到时区名称则返回空字符。

%% 百分号

语法

strftime(format,timestamp)参数 描述

format 可选。规定如何返回结果。

timestamp 可选。

提示和注释

提示:与 gmstrftime() 的行为相同,不同的是返回时间是本地时间。

例子

输出 strftime() 和 gmstrftime() 的结果:

echo(strftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));

echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));

//输出当前日期、时间和时区

echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));

?>输出:

Dec 31 1998 20:00:00

Dec 31 1998 19:00:00

It is Wed on Jan 25, 2006, 11:32:10 time zone: W. Europe Standard Time

#include

#include

intmain(void)

{

structtm*newtime;

chartmpbuf[128];

time_tlt1;

time(&lt1);

newtime=localtime(&lt1);

strftime(tmpbuf,128,"Todayis%A,day%dof%Bintheyear%Y.\n",newtime);

printf("%s\n",tmpbuf);

return0;

}

7、time

头文件:time.h

函数原型:time_t time(time_t * timer)

功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)

到当前时刻的秒数。然后调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。

补充说明:time函数的原型也可以理解为 long time(long *tloc),即返回一个long型整数。

8、gettimeofday

#include

int gettimeofday(struct  timeval*tv,struct  timezone *tz )

把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中

1>timeval

struct  timeval{

long  tv_sec;/*秒*/

long  tv_usec;/*微妙*/

};

2>timezone 结构定义为:

struct  timezone{

int tz_minuteswest;/*和greenwich 时间差了多少分钟*/

int tz_dsttime;/*type of DST correction*/

}

3>在gettimeofday()函数中tv或者tz都可以为空。如果为空则就不返回其对应的结构体。

4>函数执行成功后返回0,失败后返回-1,错误代码存于errno中。

9、settimeofday

int settimeofday(const struct tim *tv , const struct timezone *tz);

10、tzset

tzset()函数使用环境变量TZ的当前设置把值赋给三个全局变量:daylight,timezone和tzname。

这些变量由ftime和localtime函数使用校正格林威治(UTC)时间为本地时间,通过time函数从系统时间计算UTC,使用如下语法设置TZ环境变量:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值