c语言中time函数作用,C语言中时间的基本用法小结
前言
在我学的这些编程语言中,总是记不住它们的时间处理方式,每次用到时都要重新看,所以想着在这里记录下来,也方便用到时查找,也方便有需要的朋友们参考。
time_t和struct tm
在C语言中用time_t类型表示一个时间,通常它是一个和long一样长的整数,也就是说,在32位环境下,它是4字节,在64位环境下,它是8字节。它保存的就是一个整数值,表示了从1970-01-01 08:00:00到其所表示时间的秒数,它是一个非负整数,所以,time_t无法表示早于1970-01-01 08:00:00的时间。
一个很常用的函数就是time_t time(time_t *_v),它的参数是一个time_t类型的指针,返回一个和传入参数相等的time_t类型值。如果time()函数的参数是0,则返回当前的时间。
现在我们已经能用C语言表示一个时间了,但是这个时间只是从某个时间开始的秒数,如何表示更详细的时间细节呢?这就要用到struct tm类型了,它可以表示更具体的时间信息。
它一个结构体,我们就先看一下它的成员信息,一个struct tm类型包括以下成员:
int tm_year表示时间的年份,它的值从1900年开始算起,也就是说当其值为1的时候,表示的是1901年。因为time_t类型表示的时间范围不早于1970年,所以这个值通常不小于70。
int tm_mon表示时间是几月,它的值是0到11,0表示的是一月,而11表示的是12月。
int tm_mday表示时间是当前月的几号,其值的范围自然是根据月份不同也不相同。
int tm_wday表示时间是星期几,它的值的范围是0到6,0是星期天,1是星期一,6是星期六。
int tm_yday表示时间是当前年的第几天,要注意的是1月1号是第0天。
int tm_hour表示时间是几时。
int tm_min表示时间是几分。
int tm_sec表示时间是几秒。
int tm_isdst表示是否是夏令时。
localtime()
如何把一个time_t类型构造成struct tm类型呢?用struct tm *localtime(const time_t *_v)函数即可,注意参数和返回值都是指针类型。
#include
#include
int main()
{
time_t tt = time(0); //获取当前时间
struct tm *pst = localtime(&tt); //把time_t类型转换为struct tm类型
printf("The year is %d.\n", pst->tm_year + 1900); //别忘了要加1900
return 0;
}
上述程序输出:
The year is 2016.
mktime()
那么如何把struct tm类型转换为time_t类型呢?就用time_t mktime(struct tm *_v)函数,注意参数是指针类型。
那么如何输出时间呢?可以简单的使用char *ctime(time_t *_v)函数和char *asctime(struct tm *_v)函数,要注意的是返回的字符串结尾包含换行符\n。
#include
#include
int main()
{
struct tm st;
st.tm_year = 2016 - 1900;
st.tm_mon = 8;
st.tm_mday = 13;
st.tm_hour = 16;
st.tm_min = 30;
st.tm_sec = 0;
st.tm_isdst = 0;
time_t tt = mktime(&st);
printf("%s", asctime(&st));
printf("%s", ctime(&tt));
return 0;
}
上述程序输出:
Tue Sep 13 16:30:00 2016
Tue Sep 13 16:30:00 2016
我们自己用struct tm构造了一个时间,并且在执行mktime()函数后,tm_wday属性也会自动计算出来。
clock()
在time.h中,还有一些其他很常用的函数,比如clock_t clock()函数,clock_t也是一个整数,是typedef long clock_t;得来的。这个函数返回程序运行到这条语句所消耗的时间。单位一般是毫秒,可以通过printf("%d\n", CLOCKS_PER_SEC);这样确定,若输出1000,则证明是毫秒。
我们可以方便的用它来计算程序某一段语句所消耗的时间:
#include
#include
int main()
{
int i = 0;
printf("CLOCKS_PER_SEC: %ld\n", CLOCKS_PER_SEC);
long c = clock();
while(i < 1<<30) i++;
printf("The while loop cost %ld.\n", clock() - c);
c = clock();
for(i = 0; i < 1<<30; i++);
printf("The for loop cost %ld.\n", clock() - c);
return 0;
}
上述程序输出:
CLOCKS_PER_SEC: 1000
The while loop cost 2234.
The for loop cost 2206.
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用C语言能带来一定的帮助,如果有疑问大家可以留言交流。
c语言中time函数作用,C语言中时间的基本用法小结相关推荐
- c语言中fopen_s函数,关于C语言中从文件读取数据时,fopen,fopen_s和fscanf,fscanf_s的函数用法(函数的用法有很大区别)...
首先这都是针对由于VS软件的设置,一些函数的需要在函数名后面加"_s"才能使用. (或者最直接的方法程序开头加#pragma warning(disable:4996) 就什么问题 ...
- java中flush函数作用_Java语言中flush()函数作用及使用方法详解
最近在学习io流,发现每次都会出现flush()函数,查了一下其作用,起作用主要如下 //------–flush()的作用--------– 笼统且错误的回答: 缓冲区中的数据保存直到缓冲区满后才写 ...
- C语言中time函数和localtime获取系统时间和日期
C语言中time函数和localtime获取系统时间和日期 可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算. ...
- c语言中getenv的作用,C语言putenv()函数和getenv()函数的使用详解
C语言putenv()函数和getenv()函数的使用详解 C语言putenv()函数:改变或增加环境变量头文件: #include4 定义函数: int putenv(const char * st ...
- C语言中时间的基本用法
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105113358 时 ...
- c语言中fopen的作用,c语言fopen函数的用法
在c语言中可以使用"fopen()"函数打开一个文件,该函数用于打开一个文件,其语法是"open("file a","r");&q ...
- c语言中find的作用,c语言find函数的使用方法
c语言find函数的使用方法 发布时间:2020-04-29 11:09:07 来源:亿速云 阅读:449 作者:小新 这篇文章主要给大家介绍了关c语言find函数的使用方法,文中通过示例代码介绍的非 ...
- c语言中stible什么作用,C语言程序设计课后练习辅导
<C语言程序设计课后练习辅导>由会员分享,可在线阅读,更多相关<C语言程序设计课后练习辅导(54页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计课后练习辅导资料题型题干选 ...
- c语言中exit函数作用,c语言中exit函数 c语言中exit与break区别
C语言中exit();怎么用? exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束. return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进 ...
最新文章
- Oracle高级查询之OVER (PARTITION BY ..)
- LeetCode-35. Search Insert Position
- c语言五子棋卡死,五子棋程序出错了
- 微型计算机每字节的最高位时,计算机应用基础考试题加答案
- Android之app作为服务器解决跨域问题
- for循环延时_单片机的独立按键学习,实现60秒循环数字的启动暂停与清零
- 在vs.net实现向导式窗口_萨满佳作赏析 | 精神世界,灵魂向导,力量动物(1)...
- VSCode 个性化配置快捷键
- script setup 实验性 vue 语法
- 一道自创的招聘测试题
- MyBatis_Study_004(动态代理)
- 七月算法机器学习 7 工作流程与模型调优 Kaggle案例泰坦尼克号问题
- 如何优雅的使用迅雷(Mac)
- 第二章、Zigbee模块参数(DRF1609H、DRF2657C)
- VMware安装CentOS 7.0 Fail to start media check on /dev/sr0
- cp -r命令 linux什么意思,linux系统里cp指的是什么意思
- 什么是电感_共模电感和差模电感的区别
- BiDi单纤双向光模块全解析
- python数据汇总_Python,将数据框中的每日数据汇总到每月和每季度
- ABAP ALV红绿黄灯5步