更灵活的方式解决C语言开发中的时间操作问题

本文仅在作者个人网站及CSDN博客同步发表,转载请注明本文原始出处:http://easyide.cn/read/?id=230

在C语言开发中,时常会碰到时间操作的问题,以下列出一部分实际需求,然后分享一下我的解决方法:
1、计算两个时间之间的差值。
2、用字符串形式来显示时间。
3、用当前时间作为文件名来创建一个文件。
4、检验是否已经过了某个时间。
综合一下,实际上就是两个问题:时间格式化和时间计算。在标准C运行库的time.h头文件中定义了一个struct tm结构体,然后还提供了相关的时间操作函数,可以解决这些问题,但是给人感觉不灵活,一般都需要写大段的代码。后来根据自己以前写WEB程序时的习惯,我封装出了timefmt系列函数,希望能以最灵活的方式来操作时间,目前一共三个函数,差不多足够我们解决所有问题了。

举一些示例来说明问题:

要创建一个以当前时间命名的TXT文本,如果是直接使用C运行库函数来解决这个问题,写两百行以上的代码也不奇怪,但是现在,我只需要一行代码就可以解决问题:

然后得到的文件名file是一个这样子"01-05-22-12-00-00.txt"的字符串,timefmt函数的第一个参数是用来控制格式的字符串,以ymdhis分别用来匹配年月日时分秒,复写(如yy)表示两位数,有了这个参数,就能以任意的样式来控制时间字符串的格式了。第二个参数是一个要格式化的time_t类型的时间戳指针,传入NULL表示当前时间。

判断当前时间是否已经过了2012年12月22日12点1分1秒,关于这个问题,直接用C运行库你大概会这样来实现:

而现在,我也只需要一行代码就可以实现判断:

这里的timefmt_d是timefmt的逆向操作,可以实现将一个表示时间的字符串解析为一个time_t类型的时间戳,这个字符串只要是从前住后用分隔符分开的数字,顺序为年月日时分秒,就可以正确被解析成一个时间戳,然后再跟当前时间戳比较就得到了结果。

说到这里,你应该已经很清楚我的思路了:用特定格式的字符串来作时间操作,这样让C语言的时间操作变得很直观,代码可读性也大大增强。这里附上我封装的程序,分享思想、分享快乐:http://easyide.cn/read/?id=230

阅读更多
个人分类: 嵌入式
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭