- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C时间的问题
1.概念
在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.
通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:
Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。
Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。
epoch:时间点。时间点在标准C/C++中是一个整数,它用此时的时间和标准时间点相差的秒数(即日历时间)来表示。
clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。
我们可以使用ANSI标准库中的time.h头文件。这个头文件中定义的时间和日期所使用的方法,无论是在结构定义,还是命名,都具有明显的C语言风格。下面,我将说明在C/C++中怎样使用日期的时间功能。
2. 计时
C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t clock( void );
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:
void elapsed_time()
{
printf(Elapsed time:%u secs.\n,clock()/CLOCKS_PER_SEC);
}
当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:
#include “stdio.h”
#include “stdlib.h”
#include “time.h”
int main( void )
{
long i =;
clock_t start, finish;
double duration;
/* 测量一个事件持续的时间*/
printf( Time to do %ld empty loops is , i );
start = clock();
while( i-- )
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( %f seconds\n, duration );
system(pause);
}
在笔者的机器上,运行结果如下:
Time to doempty loops is 0.03000 seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。
3.与日期和时间相关的数
您可能关注的文档
- A公司加湿器赊销政策的应对措施.doc
- A引风机振动控制设备及回路检修作业指导书.doc
- a水的纯化和超纯水的制备.doc
- A研华ADAM5510在水源地水质在线监测系统中的应用.doc
- a财务报表分析习题.doc
- A送风机振动控制设备及回路检修作业指导书.doc
- B,73涂装线洁净度管理与实施.doc
- B060301铁法矿区锚杆支护技术.doc
- B090102复合顶板回采巷道锚梁网+锚索联合支护技术.doc
- B090203高强预应力支护技术在“三软”煤巷中的应用.doc
- 25春国开【民事诉讼法学】形成性考核手册(21版)试题及答案.docx
- 25春国开【宪法学】形考任务试题及答案.pdf
- 24春国开(专)《法律咨询与调解》形考1-4试题及答案.pdf
- 25春国开【刑法学(2)】形成性考核手册试题及答案.docx
- 【高中语文++】《在马克思墓前的讲话》课件+统编版高一语文必修下册.pptx
- 【高中语文++】《赤壁赋》课件+统编版高中语文必修上册.pptx
- 【高中语文++】《拟行路难(其四)》课件+统编版高二语文选择性必修下册+.pptx
- 【高中语文++】高考模拟作文++时间的双重性+课件.pptx
- 【高中语文++】《窦娥冤(节选)》课件+统编版高一语文必修下册.pptx
- 【高中语文++】《青蒿素+人类征服疾病的一小步》课件+统编版高一语文必修下册.pptx
最近下载
- 痕迹检验复习试题有答案.doc
- 未成年人充值退款起诉书.docx VIP
- 2025年中国移动校园招聘考试笔试题库历年考试试题及答案.docx VIP
- 定量CT在健康管理中的应用指南(2024).pdf
- 《网约车运营管理》教学课件4-5 潜在客户分析及客户忠诚度提升.ppt VIP
- 排水泵房安全检查表.docx
- 我国实现双碳目标面临的现实挑战与对策建议.docx VIP
- 农技指导油菜机械化播栽与收获技术.pdf
- 第15课+列强入侵与中国人民的反抗斗争【中职专用】《中国历史》(高教版2023基础模块)-20240416165039.pptx
- 仁爱八年级下册Unit6Topic3SectionC优质公开课.ppt VIP
文档评论(0)