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 ...
随机推荐
- 《微信小程序七日谈》- 第二天:你可能要抛弃原来的响应式开发思维
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 上篇文 ...
- 精品素材:WALK & RIDE 单页网站模板下载
今天,很高兴能向大家分享一个响应式的,简约风格的 HTML5 单页网站模板.Walk & Ride 这款单页网站模板是现代风格的网页模板,简洁干净,像素完美,特别适合用于推广移动 APP 应用 ...
- Linux常用命令回顾
文件操作:ls 查看文件ls -a 查看全部文件,包括隐藏文件(以.开头)ls -l 查看文件的详细信息(ll同样的效果)ls -lh 查看文件的详细信息,人性化显示,文件大小标注单位文件权限-代表文 ...
- LeetCode——Contains Duplicate III
Description: Given an array of integers, find out whether there are two distinct indices i and j in ...
- ThroughRain第一次冲刺个人总结
团队名:ThroughRain 项目确定:<餐厅到店点餐系统> 项目背景:本次项目是专门为餐厅开发的一套订餐系统.大家有没有发现在节假日去餐厅吃饭会超级麻烦,人很多, 热门的餐厅基本没有座 ...
- {"集合已修改;可能无法执行枚举操作。"}
无论是向集合中添加元素还是从集合中删除元素,都会导致集合内部的变化,特别是集合遍历器的变化.例如 List<,,,,}; foreach(int x in list) { list.Remove ...
- WPF 中获取DataGrid 模板列中控件的对像
WPF 中获取DataGrid 模板列中控件的对像 #region 当前选定行的TextBox获得焦点 /// <summary> /// 当前选定行的TextBox获得焦点 /// &l ...
- sql server2008中sql server身份能登录,window身份登录不了
用sql server身份的sa登录成功进入,一切正常,用window身份登录不了,问题如下
- gene框架文档 - 概述
欢迎使用Gene框架 最新版本:V1.2.2 开源地址:https://github.com/sasou/php-gene 作者:sasou 文档地址:http://php-gene.com/doc ...
- Android总结篇系列:Android 权限
权限是一种安全机制.Android权限主要用于限制应用程序内部某些具有限制性特性的功能使用以及应用程序之间的组件访问.在Android开发中,基本上都会遇到联网的需求,我们知道都需要加上联网所需要的权 ...