Linux C 时间函数应用

关于时间的类型:

time_t long型,表示从1970年1月1日到现在经过的秒数。

#include<time.h>
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日

 };

一般用time_t:定义 time_t now;通过now =time(NULL)返回当前的时间(秒数),time函数形式是“time_t time(time_t*)”,也可以像这样获取“time(&now)”。用户看这个大的Long型数据是没啥意义,一般通过这个函数先后得到时间计算时间差比较方便。srand(unsigned(time(NULL))获取种子的用法运用的就是这个秒数。

想清晰得得到现在的年月日信息,就不能通过这个time_t了,需要用struct tm来显示,而将time_t和struct tm转换的函数就是localtime(time_t*),返回一个struct tm*类型,注意是指针类型。然后可以得到tm中的成员,如上,皆为整形。不过注意要想得到现在的日期还需要做一些tm_year+1900才是现在的年份,tm_mon+1才是现在的月份

如果想直接获取时间的字符串。

用 char * asctime(const struct tm * timeptr);根据struct tm结构

或者用 char* ctime(time_t* t) ;  //根据time_t

输出的形式都是像这样 "Tue Jan  6 13:53:16 2015 "

注意思考为什么我们只需要定义一个struct tm*的指针,并没有申请空间,却可以获取其成员?因为locatime返回指针是一个静态变量的地址。同样asctime也是同样原理。

(0)

相关推荐

  • 基于linux下获取时间函数的详解

    //-------------------------------------------------------------//asctime(将时间和日期以字符串格式表示)#include<time.h>定义函数char * asctime(const struct tm * timeptr);函数说明asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回.此函数已经由时区转换成当地时间,字符串格式为:"We

  • 解析Linux下的时间函数:设置以及获取时间的方法

    一.时间函数 复制代码 代码如下: time_t time(time_t *t);char *asctime(const struct tm *tm);char *asctime_r(const struct tm *tm, char *buf);char *ctime(const time_t *timep);char *ctime_r(const time_t *timep, char *buf);struct tm *gmtime(const time_t *timep); //获取的为英

  • Linux C 时间函数应用

    关于时间的类型: time_t long型,表示从1970年1月1日到现在经过的秒数. #include<time.h> 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代表一月) -

  • linux时间函数与时间格式与字符串之间的转化方法

    我们可以认为格林威治时间就是时间协调时间(GMT=UTC) GMT : 格林威治时间 UTC : 时间协调时间 1.time_t time_t time(time_t *t); 取得从1970年1月1日至今的秒数. time_t类型,这本质上是一个长整数( long ),表示从1970-01-01 00:00:00到目前计时时间的秒数,timeval则精确到毫秒 2.timeval timeval类型,这是一个结构体类型,struct timeval 头文件为 time.h struct tim

  • Linux中mkdir函数与Windows中_mkdir函数的区别

    下面先来给大家介绍windows下_mkdir函数 复制代码 代码如下: #include<direct.h> int _mkdir( const char *dirname ); 参数: dirname是目录的路径名指针 返回值: 如果新目录的创建时间,这些功能中的每一个返回值 0. 在错误,则函数返回 – 1 linux下mkdir函数mode_t参数详解 复制代码 代码如下: #include <sys/stat.h> int mkdir(const char *path,

  • postman自定义函数实现 时间函数的思路详解

    Postman说明 Postman是一种网页调试与发送网页http请求的chrome插件.我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口. Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具.今天给大家介绍的这款网页调试工具不仅可以调试简单的css.html.脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在发

  • Linux中stat函数和stat命令使用详解

    stat函数和stat命令 linux文件里的[inode = index node]解释:要理解inode必须了解磁盘和[目录项],inode实际是连接[目录项]和磁盘的中间物质. 图里的大圈代表硬件的磁盘,里面的小圈代表某个文件存储在磁盘上了. [inode = index node]的node(承载node信息的结构体是:stat,stat的定义在后面 )里面有: 文件大小 文件的最后修改时间 文件的所属用户 文件的权限 硬链接计数(ls -l 显示出来的数字) 块位置:指定文件存储在磁盘

  • C++时间函数整理详解

    目录 一. 时间概念 原子时间 世界协调时 本地时间 二.Linux-c时间的存储方式 1. time_t 2. struct tm 三. 常用函数 四. 时间格式化 五.计时器-时间段 六.chrono 一. 时间概念 格林威治时间GMT(Greenwich Mean Time) 格林威治皇家天文台为了海上霸权的扩张计划,在十七世纪就开始进行天体观测.为了天文观测,选择了穿过英国伦敦格林威治天文台子午仪中心的一条经线作为零度参考线,这条线,简称格林威治子午线. 1884年10月召开了一个国际子

  • 使用ntpdate工具校正linux服务器时间(实现方法)

    当Linux服务器的时间不对的时候,可以使用ntpdate工具来校正时间. 安装:yum install ntpdate ntpdate简单用法: # ntpdate ip # ntpdate 210.72.145.44 以下是一些可用的NTP服务器地址: Name IP Location 210.72.145.44 210.72.145.44 中国(国家授时中心) 133.100.11.8 133.100.11.8 日本(福冈大学) time-a.nist.gov 129.6.15.28 NI

  • Linux 按时间批量删除文件命令(删除N天前文件)

    需要根据时间删除这个目录下的文件,/home/lifeccp/dicom/studies,清理掉20天之前的无效数据. 可以使用下面一条命令去完成: find /home/lifeccp/dicom/studies -mtime +21 -name "*.*" -exec rm -Rf {} \; 这个是根据时间删除. 下面简要解释一下,这句shell命令: find /home/lifeccp/dicom/studies -mtime +21 -name "*.*"

  • ORACLE时间函数(SYSDATE)深入理解

    加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from

随机推荐