一起talk C栗子吧(第三十七回:C语言实例--获取当前日期和时间)
来源:互联网 发布:U盘品牌 知乎 编辑:程序博客网 时间:2024/05/16 01:52
各位看官们,大家好,上一回中咱们说的是螺旋矩阵的例子,这一回咱们说的例子是:获取当前日期和时
间。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,在正式开始之前,我先问一个问题:如果我们想查看当前的日期和时间怎么办?“看表呀!“ 。从
这位看官的回答中,就能看出来大家还没有进入状态。我的意思是:我们在Mint系统上如果想查看当前的
日期和时间,应该怎么办? ”使用date命令”。完全正确!这位看官说的很好,看来你已经进入状态了。经
过你这么一说,我希望各位看官都跟着进入状态。我们现在就开始今天的内容。
Linux中提供了date命令来显示或者修改系统的日期和时间,不过这个命令是在终端中运行的,如果我们
想在C语言编写的程序中显示系统的日期和时间怎么办?这就需要使用time.h库提供的相关函数。我们
需要使用的函数有:time(),localtime()和ctime().接下来我分别介绍一下这些库函数的功能及其用法,
然后我们就可以使用它们来获取系统日期和时间了:
time的函数原型:time_t time(time_t *t)。
当t为空时,它返回从1970-01-01 00:00:00到当前时间的秒数,当t不为空时,它会把返回的秒数存放
到参数t中。另外,这里的time_t在Linux上是用double类型实现的,所以可以把它当作double类型。
localtime的函数原型:struct tm *localtime(const time_t *timep)。
它把存放在time中的时间转换成与当地时区匹配的时间,并且存放在tm类型的返回值中。这样我就
能到返回值中获取我们想要的时间了。关于tm类型,我专门说明一下:
tm类型是一个结构体类型,其原型如下:
struct tm { int tm_sec; /* seconds */ int tm_min; /* minutes */ int tm_hour; /* hours */ int tm_mday; /* day of the month */ int tm_mon; /* month */ int tm_year; /* year */ int tm_wday; /* day of the week */ int tm_yday; /* day in the year */ int tm_isdst; /* daylight saving time */ };
大家从注释中可以看到各个成员的意思,我就不多说了。我特别说一下tm_year和tm_mon。
tm_year是从1900到现在年数差。比如现在是2015年,它会返回115这个差值,因此我们使用的时候
需要加上它的基数:1900。
tm_mon是一个从0到11的数值,其中的原理我想大家能理解吧,因为这和C语言中数组的下标是一样
的。鉴于这个原理,我们在使用的时候需要加1.不然你的时钟永远比其它人的时钟晚一个月。
这些细节的内容说完了,接下来我说一下获取日期和时间的具体步骤:
- 定义tm和time_t类型的变量,用来存放时间;
- 使用time函数获取时间,并且把时间存放到time_t类型变量中;
- 使用localtime从time_t类型变量中获取当前时区中的日期和时间,并且存放到tm类型的变量中;
- 从tm类型的变量中获取当前日期和时间。
看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击这里下载使用。看官们在查
看运行结果时发现我们得到的日期和时间和date命令得到的日期和时间在格式上不一样。如果大家非常喜
欢date命令显示时间和日期的哪种格式,可以使用一个叫ctime的函数,它显示的结果会让你满意的。
另外,我在代码中也使用了ctime函数,就当作是给大家一个示例吧。
各位看官,关于获取当前日期和时间的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
- 一起talk C栗子吧(第三十七回:C语言实例--获取当前日期和时间)
- 一起talk C栗子吧(第三十五回:C语言实例--测试程序运行时间)
- 一起talk C栗子吧(第二十七回:C语言实例--插入排序)
- 一起talk C栗子吧(第四十七回:C语言实例--走迷宫一)
- 一起talk C栗子吧(第五十七回:C语言实例--main函数的参数)
- 一起talk C栗子吧(第六十七回:C语言实例--DIY字符串长度函数)
- 一起talk C栗子吧(第七十七回:C语言实例--DIY ls命令续)
- 一起talk C栗子吧(第一百一十七回:C语言实例--线程死锁一)
- 一起talk C栗子吧(第五十八回:C语言实例--获取程序当前的工作路径)
- 一起talk C栗子吧(第三回:C语言实例--求阶乘)
- 一起talk C栗子吧(第三十三回:C语言实例--巧用移位)
- 一起talk C栗子吧(第三十六回:C语言实例--螺旋矩阵)
- 一起talk C栗子吧(第三十八回:C语言实例--你了解scanf吗)
- 一起talk C栗子吧(第一百七十五回:C语言实例--获取当前终端的行数和列数)
- 一起talk C栗子吧(第一百五十五回:C语言实例--获取socket通信地址)
- 一起talk C栗子吧(第八十七回:C语言实例--使用管道进行进程间通信概述)
- 一起talk C栗子吧(第九十七回:C语言实例--使用消息队列进行进程间通信一)
- 一起talk C栗子吧(第一百二十七回:C语言实例--查看main函数的参数)
- 转:40个Java集合面试问题和答案
- 二分查找的C++非递归实现
- HDU Today HDU杭电2112【Dijkstra || SPFA】
- 文件描述符和文件指针的区别
- iOS事件处理
- 一起talk C栗子吧(第三十七回:C语言实例--获取当前日期和时间)
- poj 3009 Curling 2.0
- 线段树解决区间覆盖问题
- uva 361 - Cops and Robbers(凸包)
- 求单链表中倒数第k个结点
- python学习笔记(一)
- Android 控件沿贝塞尔曲线运动(下)———仿微信掉表情包
- uva 1411 Ants (权值和最小的完美匹配---KM算法)
- Light OJ 1339 Strongest Community(分块暴力)