Linux time()函数解析

time() 函数语法如下:

所需头文件#include <time.h>
函数原型time_t time(time_t * timer)
参数说明timer=NULL时得到机器日历时间;
timer=时间数值时,用于设置日历时间;
函数返回值机器日历时间

      功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。然后调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型。

     struct tm 类型的各数据成员分别表示年月日时分秒。

[cpp] view plaincopy
  1. struct  tm  
  2. {  
  3.        int tm_sec;  
  4.        int tm_min;  
  5.        int tm_hour;  
  6.        int tm_mday;  
  7.        int tm_mon;  
  8.        int tm_year;  
  9.        int tm_wday;  
  10.        int tm_yday;  
  11.        int tm_isdst;  
  12. };   

补充说明:time函数的原型也可以理解为 long time(long *tloc),即返回一个long型整数。因为在time.h这个头文件中time_t 实际上就是:

[cpp] view plaincopy
  1. #ifndef _TIME_T_DEFINED  
  2. #define _TIME_T_DEFINED /* avoid multiple defines of time_t */  
  3.     
  4.     typedef long time_t/* time value */  
  5.   
  6. #endif  


函数应用举例

程序例1

         time函数获得日历时间。日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。

[cpp] view plaincopy
  1. #include <time.h>  
  2. #include <stdio.h>  
  3.   
  4. int main(void)  
  5. {  
  6.     time_t t;   
  7. <span style="white-space:pre">    </span>t = time(NULL);  
  8.   
  9.     printf("The number of seconds since January 1, 1970 is %ld",t);  
  10.   
  11.     return 0;  
  12. }  
执行结果如下:

[cpp] view plaincopy
  1. fs@ubuntu:~/qiang/time$ ./time1   
  2. The number of seconds since January 1, 1970 is 1452345470  
  3. fs@ubuntu:~/qiang/time$   

程序例2:

         time函数也常用于随机数的生成,用日历时间作为种子。

[cpp] view plaincopy
  1. #include <stdio.h>  
  2. #include <time.h>  
  3. #include<stdlib.h>  
  4.   
  5. int main(void)  
  6. {  
  7.     int i;  
  8.     srand((unsigned) time(NULL));  
  9.     printf("ten random numbers from 0 to 99:\n");  
  10.   
  11.     for(i = 0;i < 10;i++)  
  12.     {  
  13.         printf("%d\n",rand()%100);  
  14.     }  
  15.   
  16.     return 0;  
  17. }  

执行结果如下:

[cpp] view plaincopy
  1. fs@ubuntu:~/qiang/time$ ./time2  
  2. ten random numbers from 0 to 99:  
  3. 22  
  4. 0  
  5. 58  
  6. 7  
  7. 29  
  8. 90  
  9. 74  
  10. 7  
  11. 95  
  12. 55  
  13. fs@ubuntu:~/qiang/time$   

程序例3:

        用time() 函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间

1)localtime() 函数

        函数功能:返回一个以tm结构表达的机器时间信息;

所需头文件#include <time.h>
函数原型struct tm *localtime(const time_t *timep)
参数说明timerp为time(NULL)获得的日历时间;
函数返回值 以tm结构表达的时间;

使用示例:

[cpp] view plaincopy
  1. #include <time.h>   
  2. #include <stdio.h>   
  3.   
  4. int main()  
  5. {  
  6.     time_t timer;  
  7.     struct tm *tblock;  
  8.     timer = time(NULL);  
  9.     tblock = localtime(&timer);  
  10.   
  11.     printf("Local time is: %s",asctime(tblock));  
  12.       
  13.     return 0;   
  14. }   

执行结果如下:

[cpp] view plaincopy
  1. fs@ubuntu:~/qiang/time$ ./localtime   
  2. Local time is: Sat Jan  9 21:37:13 2016  
  3. fs@ubuntu:~/qiang/time$   


2)asctime() 函数

       函数功能:asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为: "Wed Jun 30 21:49:08 1993/n" 

所需头文件#include <time.h>
函数原型 char *asctime(struct tm  *ptr)
参数说明ptr 为 struct tm 类型的时间结构体
函数返回值返回的时间字符串格式为:星期,月,日,小时:分:秒,年

示例如下:

[cpp] view plaincopy
  1. #include <stdio.h>   
  2. #include <string.h>   
  3. #include <time.h>  
  4.   
  5. int main()   
  6. {  
  7.     struct tm t;  
  8.     char str[80];  
  9.     t.tm_sec = 1;  
  10.     t.tm_min = 3;  
  11.     t.tm_hour = 7;  
  12.     t.tm_mday = 22;  
  13.     t.tm_mon = 11;  
  14.     t.tm_year = 56;  
  15.     t.tm_wday = 4;  
  16.     t.tm_yday = 0;  
  17.     t.tm_isdst = 0;  
  18.     strcpy(str,asctime(&t));  
  19.       
  20.     printf("%s",str);  
  21.   
  22.     return 0;   
  23. }   

执行结果如下:

[cpp] view plaincopy
  1. fs@ubuntu:~/qiang/time$ ./asctime   
  2. Thu Dec 22 07:03:01 1956  
  3. fs@ubuntu:~/qiang/time$   

3)ctime() 函数

函数功能:ctime () 将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为"Wed Jun 30 21 :49 :08 1993/n"。若再调用相关的时间日期函数,此字符串可能会被破坏。

所需头文件#include <time.h>
函数原型char *ctime(const time_t *timep);
参数说明timep 是由 time(NULL) 得到的日历时间;
函数返回值返回字符串格式:星期,月,日,小时:分:秒,年

示例如下:

[cpp] view plaincopy
  1. #include <stdio.h>   
  2. #include <time.h>   
  3. int main()   
  4. {  
  5.     time_t t;  
  6.     time(&t);  
  7.       
  8.     printf("Today's date and time: %s",ctime(&t));  
  9.     return 0;   
  10. }   

执行结果如下:

[cpp] view plaincopy
  1. fs@ubuntu:~/qiang/time$ ./ctime   
  2. Today's date and time: Sat Jan  9 21:53:51 2016  
  3. fs@ubuntu:~/qiang/time$   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源|LightGBM:三天内收获GitHub 1000+ 星

原创 2017-01-05 LightGBM 微软研究院AI头条【导读】不久前微软DMTK(分布式机器学习工具包)团队在GitHub上开源了性能超越其他boosting工具的LightGBM&#xff0c;在三天之内GitHub上被star了1000次&#xff0c;fork了200次。知乎上有近千人关注“如何看待微软开源的LightGBM&a…

【phpstudy】在windows上开启后访问php页面显示502

phpstudy在windows上安装好后&#xff0c;会默认创建一个网站&#xff0c;而且使用了php7.3.4版本&#xff0c;但是当你把这个网站删除&#xff0c;再自己去手动(不利用它这个工具)创建一个php网站&#xff0c;会发现访问php页面会出现502错误&#xff0c;纠其原因&#xff0c;…

重设MYSQL数据库ROOT用户的密码

一、 在已知MYSQL数据库的ROOT用户密码的情况下&#xff0c;修改密码的方法&#xff1a;1、 在SHELL环境下&#xff0c;使用mysqladmin命令设置&#xff1a;mysqladmin –u root –p password “新密码” 回车后要求输入旧密码2、 在mysql>环境中,使用update命令&#xff0c…

Linux---进程调度相关命令解析

进程相关命令 1、ps 查看系统中的进程 使用方式&#xff1a;ps [options] [--help] 说明&#xff1a;显示瞬间进程 (process) 的动态 参数&#xff1a;ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 ps命令常用用法&#xff08;方便查看系统进程&#xff09; 1&a…

随机数的扩展--等概率随机函数的实现

【转载】 Hackbuteer1的专栏 思想&#xff1a;就是先生成范围足够容纳扩展后随机数的一个随机数&#xff0c;然后忽略扩展过头的部分。 比如&#xff0c;已知random_n&#xff0c;要求random_m&#xff0c;最简单方法可以先生成random_n2()n*(random_n()-1)random_n(); 至于怎么…

js前台数据校验

1.脚本 Validator {exp:{numWord:/^[A-Za-z0-9]$/, //数字或字母numWordM:/^[\-]*[A-Za-z0-9]$/, //数字或字母可为负数letter:/^[A-Za-z]$/, //字母chinese:/^[\u4E00-\u9FA5\uF900-\uFA2D]$/,numberReg:/^[0-9]$/,//数字格式 只能是0到9的数字 eg:92wordReg:/^(\w|[\u4E00-\…

Linux 系统应用编程——多线程经典问题(生产者-消费者)

“生产者——消费者”问题是Linux多线程编程中的经典问题&#xff0c;主要是利用信号量处理线程间的同步和互斥问题。 “生产者——消费者”问题描述如下&#xff1a; 有一个有限缓冲区&#xff08;这里用有名管道实现 FIFO 式缓冲区&#xff09;和两个线程&#xff1a;生产者和…

Linux 文件服务---------- nfs Server

Linux 文件服务nfs &#xff08;Network file system&#xff09;#网络文件系统 ---> 远程文件调用samba #文件共享&#xff08;unix /linux /windows &#xff09; ,只能适用于局域网。ftp #远程文件存取.(跨网络&#xff0c; 跨平台&#xff0c; 文件存取)。 nfs Server r…

VC命令行编译参数介绍

From: http://blog.csdn.net/zhangxinrun/article/details/5797122 CL.exe是控制Microsoft C和C编译器与链接器的32位工具。编译器产生通用对象文件格式(COFF)对象(.obj)文件。链接器产生可执行文件(.exe)或动态链接库文件(DLL)。 注意&#xff0c;所有编译器选项都区分大小写。…

在linux 5上配置戴尔MD3220i

http://zh.community.dell.com/techcenter/storage/f/150/t/2773.aspx转载于:https://blog.51cto.com/xs2013/1298568

Linux 系统应用编程——进程间通信(下)

在前面&#xff0c;我们学习了传统的进程间通信方式——无名管道&#xff08;pipe&#xff09;、有名管道&#xff08;fifo&#xff09;和信号&#xff08;signal&#xff09;。 下面我们来学习 System V IPC 对象&#xff1a; 1、共享内存&#xff08;share memory&#xff0…

VC程序员常用工具篇

1. IDE&#xff1a;钟情于VC6.0&#xff0c;但是也感觉Visual Studio2008和2010的强大,可能迟早得转到VS高版本上来。在安装VC6.0的时候记得安装sp6补丁和msdn&#xff08;MSDN_1.5_精简安装版 &#xff09;2. 辅助&#xff1a; Visual Assist&#xff0c;喜欢它代码自动补全&a…

Hibernate的批量操作

批量插入 Hibernate强制开启了一级缓存&#xff0c;缓存空间是有限的&#xff0c;如果批量操作的SQL语句太多&#xff0c;就会运行失败&#xff08;内存溢出&#xff09;&#xff0c; 因此在批量操作的时候&#xff0c;每执行一批SQL语句&#xff0c;都需要刷新缓存&#xff0c…

.balignl 16,0xdeadbeef浅析

http://zqwt.012.blog.163.com/blog/static/12044684201031102956976/ 最近在分析u-boot的源代码&#xff0c;看到这一行&#xff1a; .balignl 16, 0xdeadbeef不知道为什么要这样写&#xff0c;0xdeadbeef&#xff0c;明显是个单词组&#xff0c;写在这里有何意义呢&am…

使用maven导入任意jar包

http://mvnrepository.com/ 我这里&#xff0c;因为是spark1.5.2版本。 保存&#xff0c;maven会自动下载jar包到本地仓库。 转载于:https://www.cnblogs.com/lchzls/p/6281764.html

Linux下静态IP地址的设置及TFTP服务的搭建

TFTP&#xff08;Trivial File Transfer Protocol,简单文件传输协议&#xff09;是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上&#xff0c;提供不可靠的数据流传输服务&#xff0c;…

ASCII码表

From: http://www.96yx.com/tool/ASC2.htm ASCII码表 信息在计算机上是用二进制表示的&#xff0c;这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备&#xff0c;这些设备的主要目的就是&#xff0c;以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理…

inotify

Linux 2.6内核中的文件系统变化通知机制 一、 引言 众所周知&#xff0c;Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方&#xff0c;为了改善这种状况&#xff0c;开源社区提出用户态需要内核提供一些机制&#xff0c;以便用户态能够及时地得知内核或底层硬件设备…

bzoj 3924 幻想乡战略游戏

题目大意&#xff1a; 有边权点权的树&#xff0c;动态修改点权 每次修改后求带权重心x (\(minimize\) \(S\sum_i val[i]*dist[x][i]\)) 分析&#xff1a; 从暴力找突破口&#xff1a; 对于边x,y&#xff0c;设长度为len&#xff0c;切断后x半边树权值和为\(w_1\)&#xff0c;y…

Linux 系统应用编程——网络编程(服务器模型)

在网络通信过程中&#xff0c;服务端通常需要处理多个客户端。由于多个客户端的请求可能会同时到来&#xff0c;服务器端可采用不同的方法来处理。总体上来说&#xff0c;服务器端可采用两种模型来实现&#xff1a;循环服务器模型和并发服务器模型。 循环服务器模型是指服务器端…