时间加减法

本文深入探讨了C/C++中time_t和struct tm数据结构的使用,详细解释了时间加减操作的方法,并通过实例展示了如何在代码中进行实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.cnblogs.com/bo083/archive/2011/06/07/2152790.html

1. 相关数据结构

  • time_t

首先看time.h文件中队time_t的定义

可以看出time_t实际上是一个整数,它记录了保存的是从1970年1月1日0时0分0 秒到现在经过的秒数。这里有一点要注意,对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒,否则会发生溢出。为了能够表示更久远的时间,一些编译器厂商引入了64位甚至更长的整形数来保存日历时间。

  • struct tm

首先看time.h文件中队time_t的定义


ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。

  • time_t和struct tm之间是可以相互转化的

在time.h文件中有如下两个函数
time_t mktime(struct tm * timeptr);
struct tm * localtime(const time_t * timer);
2. 时间加减

从上面对time_t和tm的分析你应该很容易想到如何进行时间的加减操作了吧。一种方法,我们可以对time_t类型的数据直接进行加减秒数操作。另一种方法,可以操作tm结构体内的变量。下面一个例子实现对当前时间加30分钟的操作。

3. 问题

上面代码的运行结果第三个输出是在第二个输出的基础上加了30分钟。为什么tmp_time变化会导致*ptime的变化。

 

另外#include和#include也有区别。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值