C语言中关于时间的函数详解(二)
ctime()函数
在time.h中的声明:
char*ctime(const time_t*t);
ctime()函数的作用是把t所指的日历时间转换为字符串形式的本地时间.
字符串格式为 Wed Jun 30 21:49:08 1993\n\0
等价于asctime(localtime(t))
返回值与asctime()函数的返回值类型相同
例子:
#include<stdio.h>
#include<time.h>
void main()
{time_t t;t = time(NULL);//获取当前时间(秒数)printf("Localtime is %s", ctime(&t));//调用ctime()函数将秒数形式的时间转换为本地日历时间
}
//运行结果:Localtime is Sun Mar 7 17:31:09 2
clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。
clock_t表示时间值的算数类型(长整型)在time.h中的定义
#ifndef_CLOCK_T_DEFINED
typedef long clock_t;
#define_CLOCK_T_DEFINED
#endif
C/C++中的计时函数是clock(),这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。
clock()函数
在time.h中的声明:
clock_t clock(void);
time.h中还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义:
#define CLOCKS_PER_SCE ((clock_t)/1000)
每过1毫秒,调用clock()函数的返回值就加1。为确定秒级时间,clock()函数的返回值应该除以宏CLOCKS_PER_SCE的值,例子如下
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{long i = 10000000;double duration;clock_t start, finish;//测量一个一个事件持续的时间printf("Time to do %ld empty loops is ", i);start = clock();//事件起始while (i--);//等待i慢慢减为0finish = clock();//事件完成duration = (double)(finish - start) / CLOCKS_PER_SEC;//事件持续时间(转化为以秒为单位)printf("%f seconds\n", duration);
}
//运行结果:Time to do 10000000 empty loops is 0.063000 seconds
size_t(sizeof计算结果的无符号整数类型)
strftime()函数
在time.h中的声明
size_t strftime(char*s,size_t maxsize,const char*format,const strcut tm*timer);
strftime()函数在foemat所指向的字符串的格式控制下把字符放入s岁指向的数组中。format字符串由0个或多个转换说明符及普通的多字节字符组成。所有普通字符被原封不动地拷贝到数组s中。如果format与s的储存区域相互重叠时,拷贝结果时不可预知的。数组s中最多放入maxsize个字符。format中的每个转换说明符被下表描述的相应字符所取代。
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
例子如下:
#include<stdio.h>
#include<time.h>
void main()
{struct tm* t;char tmpbuf[128];time_t t1;t1 = time(NULL);//获取当前时间t = localtime(&t1);//把当前时间的秒数形式转换成本地日历时间strftime(tmpbuf, 128, "Today is %A,day %d of %B in the year %Y.\n", t);printf(tmpbuf);
}
//运行结果:Today is Sunday,day 07 of March in the year 2021.
C语言中关于时间的函数详解(二)相关推荐
- c语言c++语言中静态变量,函数详解
静态变量,静态函数对于一些c,c++的初学者来说,造成了不少的困扰.昨晚和寝室的室友讨论到这 个问题,想了一下,作了一下总结: 虽然说c和c++在很多人的眼里就是孪生姐妹,其实还是有很大区别的.在这里 ...
- c语言编译时间,C语言中关于时间的函数
C语言中关于时间的函数 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.下面我们一 ...
- c语言二级指针有什么作用,C语言中二级指针的实例详解
C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...
- c语言结构体成员变量私有化,C语言中结构体变量私有化详解
C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...
- mysql日期时间操作函数详解
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而 ...
- C语言中三个数比较大小详解——三种方法
C语言中三个数比较大小详解--三种方法 方法一:if-else法 方法二:函数法 方法三:三目运算符法 C语言中比较三个数的大小有很多方法,以下是我总结的三种方法: 首先我定义 int a = 1 ...
- c语言自定义color,forecolor c语言中的颜色设置语句详解
backcolor与forecolor的区别 backcolor:用来设置图像的背景颜色,也用来设置文档.表格.图像等的背景颜色. forecolor:用来设置图像的前景颜色,也用来设置文档.表格.图 ...
- Oracle中nvl()与nvl2()函数详解
Oracle中nvl()与nvl2()函数详解: 函数nvl(expression1,expression2)根据参数1是否为null返回参数1或参数2的值: 函数nvl2(expression1,e ...
- c语言输入循环语句,C语言中输入输出和循环语句详解.ppt
C语言中输入输出和循环语句详解 C语言的输入输和循环分支语句详解 本章主要向大家介绍下C语言的输入和输出功能以及循环分支语句的使用 第4章 顺序结构程序设计 3.1 C语言语句 3.2 赋值语句 3. ...
最新文章
- SDP 协议分析 http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html
- Linux_Samba详解
- 区块链是什么?白话解读入门必须了解的概念
- crontab添加定时任务
- Oracle错误代码:ORA-28002导致密码消失
- android java 延时函数,如何在Android中设置文本之间的延迟
- Moravec角点检测算子
- SpringMVC在使用Jackson2时关于日期类型格式化的问题
- 震惊!几道Python 理论面试题,Python面试题No18
- linux sed保存,linux sed
- flask mysql pymysql_在 flask 中使用 pymysql 报错,望大神解答!感激不尽!
- php dsn port,PHP的InfluxDB客户端库使用
- mysql8.0 安装 修改密码 允许远程连接
- C#高性能大容量SOCKET并发完成端口例子(有C#客户端)完整实例源码
- linux系统源码文档,Linux操作系统源代码详细分析
- 开心辞典计算机科学,人机大战首日战报:计算机与人类暂不分高下
- 小米手环6NFc支持Android,小米手环6支持nfc吗 小米手环6有没有nfc功能
- iframe自动播放
- T410与T410i有什么区别?
- 森林防火三维地理信息系统