c语言对时间的处理函数和计时的实现

Linux 时间函数小结 下面叙述两方面的东西。第一部分,介绍两个自己写的获取时间的示例,;第二部分,各种时间函数的用法汇总,来自网上,已经无法追溯出处了。搜索了以下,在以下博客《c语言中时间的获取》中有类似内容。 http://hi.baidu.com/greatren518/blog/item/5c 阅读详情
所有代码编译环境:MSVC6.0
1,时间的获取:
通过time()函数来获得日历时间(Calendar Time),其原型为:time_t time(time_t * timer);
#include "stdafx.h"
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
struct tm t;             //定义tm时间结构,用来存储时间格式的数据信息
time_t t_of_day;      //定义time_t时间结构
t.tm_year=2006-1900;//以1900年为标准计算时间
t.tm_mon=6;                  //为结构体成员赋值
t.tm_mday=1;
t.tm_hour=0;
t.tm_min=0;
t.tm_sec=1;
t.tm_isdst=0;
t_of_day=mktime(&t);
//使用mktime()函数将用tm结构表示的时间转化为日历时间:time_t型变量。其函数原型如下:time_t mktime(struct tm * timeptr);ctime()函数(参数为time_t结构)将时间以固定的格式显示出来,返回值是char*型的字符串。
return 0;
}
2,时间的储存,通过预定义的两种结构来存储:
1,日历时间(Calendar Time)是通过time_t数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。在time.h中,我们也可以看到time_t是一个长整型数:
#ifndef _TIME_T_DEFINED
typedef long time_t;          /* 时间值 */
#define _TIME_T_DEFINED       /* 避免重复定义 time_t */
#endif
2,在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在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日,以此类推 */
        int tm_isdst;   /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
        };
3,时间的显示:
time.h头文件中提供了asctime()函数(参数为tm结构指针)和ctime()函数(参数为time_t结构)将时间以固定的格式显示出来,两者的返回值都是char*型的字符串。返回的时间格式为:星期几 月份 日期 时:分:秒 年/n/0;time.h还提供了两种不同的函数将日历时间(一个用time_t表示的整数)转换为我们平时看到的把年月日时分秒分开显示的时间格式tm:
struct tm * gmtime(const time_t *timer);
gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间
struct tm * localtime(const time_t * timer);localtime()函数是将日历时间转化为本地时间
#include <stdafx.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
       struct tm *local,*ptr; //定义tm结构指针存储时间信息
       time_t t;                       //时间结构或者对象
       t=time(NULL);                     //获取当前系统的日历时间
       //通过time()函数来获得日历时间(Calendar Time),
       //其原型为:time_t time(time_t * timer);
       local=localtime(&t);//localtime()函数是将日历时间转化为本地时间
       printf("Local hour is: %d/n",local->tm_hour);//输出tm结构体的时间成员
       printf("UTC hour is: %d/n",local->tm_hour);
       //local=gmtime(&t);
       //gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),
       //并返回一个tm结构体来保存这个时间   
       ptr=gmtime(&t);//将日历时间转化为世界标准时间
       printf("The UTC time is %s/n",asctime(ptr)); //格式化输出世界标准时间
       printf("The local time is %s/n",ctime(&t));//输出本地时间
       /*asctime()函数(参数为tm结构指针)和ctime()函数(参数为time_t结构)将时间以固定的格式显示出来,两者的返回值都是char*型的字符串。返回的时间格式为:星期几 月份 日期 时:分:秒 年/n/0 */
       return 0;
}
4,时间差的计算:
所用函数:C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中对clock函数定义如下:
clock_t clock( void );函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,clock_t是一个长整形数,保存时间的数据类型。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
每过千分之一秒(1毫秒),调用clock()函数返回的值就加1,时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。double difftime(time_t time1, time_t time0);这个函数来计算时间差。
#include "stdafx.h"
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
    time_t c_start,t_start, c_end,t_end;  
    c_start = clock();
       t_start = time(NULL) ;
    system("pause") ;
       c_end = clock();
    t_end = time(NULL) ;
    printf("The pause used %f ms by time()./n",difftime(c_end,c_start)) ;
       printf("The pause used %f s by clock()./n",difftime(t_end,t_start)) ;
    system("pause");
    return 0;
}
5,时间的其他用途
用作随机数的种子,由于时间获得的实际上是一个double类型的长整数,通过time(NULL)函数获得,作为srand(time(NULL))的种子产生随机数比较好。
#include "stdafx.h"
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
       srand(time(NULL));
       //设置种子,如果将这个函数注释掉,每次运行程序得到的随机数十相同的
       for(int i=0;i<100;i++)
       {
              printf("%d/t",rand());
       }
    system("pause");
    return 0;
}
c语言计时器,定时器 1. clock()函数需要引用头文件 “time.h”注:clock函数返回从开始这个程序到调用的 clock() 函数之间的CPU时钟计时单元(clock tick)数。返回值类型是 clock_t。其中 CLOCKS_PER_SEC 是一个常数,表示一秒钟有多少个时钟数。2. 1time(), difftime() 函数返回从1970年1月1日00:00:00到现在经过的秒数注:建议使用 difftime() 来计算程序执行所花时间(更精确,单位:s2.2 每隔10s打印。 阅读详情

相关推荐

C语言时间函数

在调用系统时间处理时间问题时,需要使用时间函数,使用前需要引入头文件time.h。 1.time函数 time_t time(time_t *t); time函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。参数t是一个指针,如果不是一个空指针,函数也会将返回值存到t指针所指的内存单元中。time_t是“time.h”头文件中定义的一个数据类型,表示一个

zhibin的程序日记 942

clock()与gettimeofday()

目录 1.clock() 2.gettimeofday()----linux C函数 1.clock() 是C标准库<time.h>中的函数 声明为:clock_t clock(void) 功能:创建程序进程到clock()函数被调用之间的cpu时钟计时单位数,即硬件滴答数。可通过下面的CLOCKS_PER_SEC换算成秒。 返回值类型为clock_t,clock_t是用来保存时间的数据类型,typedef long clock_t,其实就是一个长整型。 常量CLOC..

m0_38062470的博客 1250

经典多级时间轮定时器(C语言版)

经典多级时间轮定时器(C语言版) 1. 序言 最近一直在找时间轮的C语言实现代码,发现很多都是Java或者c++实现的。而我对其他语言不熟悉,看不太懂。关于C实现的,让我如沐春风的实现没找到,github上也只找打一个135星的项目,它的具体实现还没来得及看。后来经过多方搜索,找到了两个比较类似的代码,博主都称参考Linux源码中的实现,但是我没有找到对应的代码,个人感觉他们代码实现的很好,经过整理后再次分享出来供以后学习(反正我自己写不出来,我尝试写了一个简单时间轮的代码,是在不敢直视)。 言归正传 2

遇见你是我最美丽的意外 9647

c语言中获取当前时间的函数

1、time()函数 #include <time.h>time_t time( time_t * ) ; //time_t 是long类型 //返回从1970年1月1日0时0分0秒,到现在的的秒数 #include <time.h> time_t t; time_t time(&t);//返回从1970年1月1日0时0分0秒,...

modi000的博客 3万+

51单片机c语言的秒表设计,基于51单片机的计时器设计

描述用51单片机的定时器0的方式1计时,结果用4位数码管显示,分别为秒十位,秒个位,毫秒百位,毫秒十位。所以总共最大计时为1分钟,精确到了0.01s。同时,加上3个独立按键,分别控制秒表的清零,暂停和开始功能。按照模块化的思想,首先先把要用的函数和预定义写到一个头文件中,要用到的预定义和全局变量如下:#include#defineucharunsignedcharsbitClear=P3^7;//...

weixin_35662417的博客 3680

c语言按键长按双击,51单片机实现单按键单击、双击、长按功能

#include "keyboard.h"/***************************************************************************程序功能:一个按键的单击、双击、长按。三种按键方式,然后做不同的处理。这里以P1口的LED变化作为测试单击:点亮P1口的第一个LED(低电平点亮)双击:点亮P1口的第二个LED(低电平点亮)长按:点亮P1口...

weixin_42135773的博客 4579

时间函数以秒计时c语言,c语言对时间的处理函数和计时的实现

1,时间的获取:通过time()函数来获得日历时间(Calendar Time),其原型为:time_t time(time_t * timer);#include "stdafx.h"#include "time.h"#include "stdio.h"#include "stdlib.h"int main(void){struct tm t;//定义tm时间结构,用来存储时间格式的数据信息ti...

weixin_34365042的博客 1714

C语言实现一个简单的多定时任务功能模块

一.简介 在项目开发中,很多功能模块都会用到定时功能,比如说定时3分钟后点亮一个led灯,定时1个小时后自动关机等,如果项目中只用到了一个应用层级别的定时功能,可能简单的写一下就好了,但是当项目中有多个定时功能需求的话,反而是把定时功能单独拿出来,写成一个功能模块,更简单更清晰。 二.功能实现 创建TimSet.c,TimSet.h,在TimSet.h文件中声明需要用的数据类型,及声明外部文件调用要用的api函数,在TimSet.c中实现api接口函数 2.1在头文件中定义数据类型 //枚举用到定时功能的模

qq_39932620的博客 2352

c语言毫秒计时函数,c语言对时间的处理函数和计时的实现(4页)-原创力文档...

c语言对时间的处理函数和计时的实现1,时间的获取:通过time()函数来获得日历时间(Calendar Time),其原型为:time_t time(time_t * timer);版权文档,请勿用做商业用途#include "stdafx.h"#include "time.h"#include "stdio.h"#include "stdlib.h"int main(void){struct t...

weixin_34345599的博客 1018

深入Google DroidGuard:剖析其自定义虚拟机如何守护Android应用安全(附pcbc文件机制解析)

本文深入解析Google DroidGuard自定义虚拟机如何通过独特的架构设计和加密机制保护Android应用安全。DroidGuard采用动态密钥派生、全加密执行环境和pcbc文件机制,有效防御逆向工程和自动化攻击,为移动安全提供新思路。

weixin_34254464的博客 307

智慧楼宇解决方案-全套大合集

智慧楼宇解决方案,楼宇能耗-环境-设备统一管控解决方案。

byte58的博客 2592

四位共阳极数码管显示函数_新手求助四位共阳数码管显示函数

#include #include "DS1302.H"sbit K_S = P1^0;//显示模式sbit K_M = P1^1;//修改sbit K_I = P1^2;//加sbit K_D = P1^3;//减sbit Spk = P1^7;//蜂鸣器//共阳码表unsigned char code TABLE[]={0xC0,/*0*/0xF9,/*...

weixin_39751076的博客 1071

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2319

标准C语言各种时间函数用法

1.概念 在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。下面主要介绍在C/C++中时间和日期的使用方法. 通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: Coordinated Universal Time(UTC):协调世界时,又称为世界标准

xiaoshengqdlg的专栏 1万+

ncl泰勒图(均方根误差、标准差、相关系数)

ncl泰勒图(均方根误差、标准差、相关系数)

weixin_61281699的博客 8007

【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码

大家好,我是阿光。本专栏整理了《深度学习100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。正在更新中~ ✨。

优快云 精品推荐 10万+

C语言处理按键的 单击(短按),长按,双击,多击 处理

【一】: (1)如果为按键按下到释放的一个过程,t1 如果大于 250ms 认为按键有效 否则 按键无效,不做处理。 (2)如果联系两个双脉冲,脉冲之间相差时间t2 < 1S 认为是 双按键 否则 判定为两次不相干的按键行为。 (3)如果按下时间t3 >=5s 判定为长按键 【二】 按键的处理函数 void APP_KEY_Task(void) 每5ms 调用一次 该函数需...

ZenNaiHeQiao的专栏 1万+

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

data+scenario+science+insight 835

25.C语言标准库函数(下)

本文介绍了C语言中字符串处理和时间处理的常用函数,包括字符串的复制、连接、比较及查找等操作,详细解释了各函数的参数及用法。此外,还探讨了时间的表示方式、时间结构体的使用以及如何进行时间的计算和转换,帮助读者深入理解C语言的字符串和时间管理。

余识- 1286

哨兵1号回波数据(L0级)FDBAQ压缩算法详解

本文介绍哨兵1号用的FDBAQ算法,它实现非整数可变bit压缩,大部分数据仅需 3bit输出,少数高反射率数据需4bit输出,使得平均输出比特率刚超过3bit,比熵约束分块自适应量化 (ECBAQ)压缩算法所需的3.7bit更低。也就是说FDBAQ压缩完,除了要记录分块尺寸和各块的均值码(对应哨兵1号数据包里的THIDX)外,还需要记录霍夫曼码字的长度(对应哨兵1号数据包里的BRC)。唯一不同的就是量化后的编码规则使用了霍夫曼编码,相当于在传统的BAQ压缩流程的后面又加了一个步骤。

2303

Handler相关面试题

常见面试题: Handler相关 一.谈一谈你对handler的认识,例如:机制和实现等。 handler机制图解: handler常见使用过程: ①.子线程向主线程发送消息: 在主线程中新建Handler实例,并重写handleMessage()方法用于处理子线程传过来的message; 通过Message.obtain()方法获取到消息msg,然后将需要传递给主线程的信息通过msg的what、obj等字段传递; 通过handler的sendMessage发送msg消息,然后在hand

龚礼鹏的博客 3171
上一篇: linux 计算时间 time
下一篇: clock time times
pointfish
博客等级 码龄17年 58粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值