C语言-12-日期和时间处理标准库详细解析及示例
概述
- 标准库 <time.h> 提供了用于日期和时间处理的结构和函数
- 是C++语言日期和时间处理的基础
与时间相关的类型
- clock_t,本质是:unsigned long - typedef unsigned long __darwin_clock_t;
 typedef __darwin_clock_t clock_t;
 
- time_t,本质是:long - typedef long __darwin_time_t;
 typedef __darwin_time_t time_t;
 
- size_t,本质是:unsigned long,其中包含条件编译指令 - // size_t
 typedef __darwin_size_t size_t;
 // _darwin_size_t
 #if defined(__SIZE_TYPE__)
 typedef __SIZE_TYPE__ __darwin_size_t;
 #else
 typedef unsigned long __darwin_size_t;
 #endif
 
- tm 结构 - struct tm {
 int tm_sec; /* seconds after the minute [0-60] */
 int tm_min; /* minutes after the hour [0-59] */
 int tm_hour; /* hours since midnight [0-23] */
 int tm_mday; /* day of the month [1-31] */
 int tm_mon; /* months since January [0-11] */
 int tm_year; /* years since 1900 */
 int tm_wday; /* days since Sunday [0-6] */
 int tm_yday; /* days since January 1 [0-365] */
 int tm_isdst; /* Daylight Savings Time flag */
 long tm_gmtoff; /* offset from CUT in seconds */
 char *tm_zone; /* timezone abbreviation */
 };
 
标准库函数
- time_t time(time_t *time) - 返回系统当前日历时间,自1970年1月1日以来经过的秒数;如果系统没有时间,则返回.1,如:1456131213
 - time_t seconds;
 seconds = time(0);
 
- char *ctime(const time_t *time) - 返回一个表示当地时间的字符串指针,格式为:Wed Feb 17 15:23:46 2016(与系统有关)
 - char *date = ctime(&seconds);
 
- struct tm *localtime(const time_t *time) - 返回指向表示本地时间的tm结构的指针
 - tm *localTime = localtime(&seconds);
 
- clock_t clock(void) - 该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间,如:1456102413
 - clock_t clockTime = clock();
 
- char *asctime(const struct tm *time) - 该函数返回一个指向字符串的指针,字符串包含了 localTime 所指向结构中存储的信息,格式为:Wed Feb 17 15:48:45 2016
 - date = asctime(localTime);
 
- struct tm *gmtime(const time_t *time) - 该函数返回一个指向 localTime 的指针,localTime 为 tm 结构,用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示
 - localTime = gmtime(&seconds);
 date = asctime(localTime);
 
- time_t mktime(struct tm *time) - 该函数返回日历时间,相当于 time 所指向结构中存储的时间
 - seconds = mktime(localTime);
 
- double difftime(time_t time2, time_t time1) - 该函数返回 time1 和 time2 之间相差的秒数
 - double difference = difftime(seconds, seconds1);
 
- size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 
 `- 可用于格式化日期和时间为指定的格式 
- 格式说明符 - 明符 - 含义 - 示例 - 缩写的星期几名称 - Sun - 完整的星期几名称 - Sunday - 缩写的月份名称 - march - 日期和时间表示法 - Wed Feb 17 08:07:12 2016 - 一月中的第几天(01-31) - 28 - 24 小时格式的小时(00-23) - 23 - 12 小时格式的小时(01-12) - 09 - 一年中的第几天(001-366) - 366 - 十进制数表示的月份(01-12) - 09 - 分(00-59) - 59 - AM 或 PM 名称 - PM - 秒(00-59) - 09 - 一年中的第几周,以第一个星期日作为第一周的第一天(00-53) - 53 - 十进制数表示的星期几,星期日表示为 0(0-6) - 6 - 一年中的第几周,以第一个星期一作为第一周的第一天(00-53) - 1 - 日期表示法 - 02/17/16 - 时间表示法 - 08:14:44 - 份,最后两个数字(00-99) - 99 - 年份 - 2016 - 时区的名称或缩写 - CST - 一个 % 符号 - % 
- 示例 - strftime(date, 99, "%Y年%m月%d日 %A %p %I:%M:%S", localTime);
 // 打印结果:2016年02月22日 Monday AM 08:53:33
 
 
示例
- 完整代码 - ```
 #include <stdio.h>
 #include <time.h>
 int main(int argc, const char * argv[]) {
 //
 time_t seconds;
 seconds = time(0);
 printf("%ld\n", seconds);
 //
 char *date = ctime(&seconds);
 printf("%s\n", date);
 //
 struct tm *localTime = localtime(&seconds);
 printf("%d\n", localTime->tm_sec);
 //
 clock_t clockTime = clock();
 printf("%lu\n", clockTime);
 //
 date = asctime(localTime);
 printf("%s\n", date);
 //
 localTime = gmtime(&seconds);
 date = asctime(localTime);
 printf("%s\n", date);
 //
 time_t seconds1 = mktime(localTime);
 printf("%ld\n", seconds1);
 //
 double difference = difftime(seconds, seconds1);
 printf("%f\n", difference);
 //
 strftime(date, 99, "%Y年%m月%d日 %A %p %I:%M:%S", localTime);
 printf("%s\n", date);
 return 0;
 }
 ```
C语言-12-日期和时间处理标准库详细解析及示例的更多相关文章
- python中时间处理标准库DateTime加强版库:pendulum
		DateTime 的时区问题 Python的datetime可以处理2种类型的时间,分别为offset-naive和offset-aware.前者是指没有包含时区信息的时间,后者是指包含时区信息的时间 ... 
- 10个用于处理日期和时间的 Python 库
		Python本身提供了处理时间日期的功能,也就是datetime标准库.除此之外,还有很多优秀的第三方库可以用来转换日期格式,格式化,时区转化等等.今天就给大家分享10个这样的Python库. 上期入 ... 
- Linux 查看支持的语言,日期,时间,计算器
		1.查看系统目前支持的语言 echo %LANG 2.查看日历 cal 3.查看日期时间 date 4.计算器 bc 
- 2-8 R语言基础 日期与时间
		#日期 Date > x<-date()> class(x)[1] "character" > x2 <- Sys.Date()> class( ... 
- rtmp官方标准规范详细解析
		标准规范学习: rtmp消息结构,包括几个部分: 时戳:4 byte,单位毫秒.超过最大值后会翻转. 长度:消息负载的长度. 类型ID:Type Id 一部分ID范围用于rtmp的控制信令.还有一部 ... 
- datetime日期和时间
		datetime是Python处理日期和时间的标准库. from datetime import datetime # 获取当前时间 now = datetime.now() print(now) # ... 
- python3关于date和time的标准库
		python3中关于日期和时间的标准库datetime和time,之前都是用的时候随用随查,今天系统的看一下用这两个库可以做些什么. 1.time标准库 #首先添加一个time对象,看一下该对象的属性 ... 
- Java基础之一组有用的类——生成日期和时间(TryDateFormats)
		控制台程序. java.util包中含有相当多的类涉及日期和时间,包括Date类.Calendar类和GregorianCalendar类. Date类对象其实定义了精确到毫秒的时刻,从1970年1月 ... 
- C++日期和时间
		C++ 日期 & 时间 C++ 标准库没有提供所谓的日期类型.C++ 继承了 C 语言用于日期和时间操作的结构和函数.为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <c ... 
随机推荐
- Table_EXISTS_ACTION=APPEND时导入数据时
			11g对数据泵新增了一些功能.这篇介绍新增的选项DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS. Oracle11g的数据泵新增了一个DATA_OPTIONS选项,目前只有一个 ... 
- 《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩
			<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 微信小 ... 
- Koa – 更加强大的下一代 Node.js Web 框架
			Koa 是 Express 的开发团队设计的下一代 Web 框架,其目的是为 Web 应用程序提供更小,更具表现力,更坚实的基础.Koa 没有核捆绑任何中间件,并提供了一套优雅的方法,使服务器端开 ... 
- TypeWonder – 在任何网站上实时预览字体效果
			TypeWonder 让网页字体的选择过程变得轻松愉快.它可以帮助您在任何网站上快速测试 Web 字体效果!输入网站网址,就能够即时预览的字体的实际效果,还可以从数百种字体中进行挑选,您还可以得到所需 ... 
- Win10 + VS2015 下编译 Qt5.6.0
			近期由于另外一个项目需要用 vs2015 ,于是把 Qt 也升级到了 5.6.0 .由于项目需要兼容 Windows xp ,所以需要自己编译 Qt .这里大致整理一下编译的过程. 安装 Active ... 
- KeyValue Config
			public class ConfigHelper { public static ScriptsHelper Scripts { get { return new ScriptsHelper(); ... 
- Websocket 概述
			WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). [[ from websocket是什么原理? ]] 一.WebSocke ... 
- 后缀数组 - 求最长回文子串 + 模板题 --- ural 1297
			1297. Palindrome Time Limit: 1.0 secondMemory Limit: 16 MB The “U.S. Robots” HQ has just received a ... 
- Jcrop简单实用
			今天有一个项目的功能需求 “在上传照片的时候能进行裁剪”,网上找了下,发现有Jcrop这款插件,自己试了下,感觉很不错,蛮好用的.又能增加用户体验,测试了兼容性也很好,所以在这里分享下 首先,可以到官 ... 
- 数组(Array)的使用方法
			本文内容: 1.概述 2.数组基础 3.结合for循环与arr.length,在数组尾部插入数值 4.利用'concat','join'实 ... 
