计算日期差值

这是基于C++进行获取时间戳计算日期差值的一个程序

身为初学者,在这里记录一些自己学习中所获得的一些小知识,仅此而已。这个程序主要是加深对struct tm的理解和mktime函数的一些理解,mktime函数后面只能跟struct tm类型的变量,然后就是一些其他要注意的东西都在代码注释里有讲到。

这是主要代码基于c++

#include<iostream>//主要头文件
#include<time.h>//包含struct tm 结构体,mktime 函数
using namespace std;
int main() {
	int a, b, c, d, e, f, n;
	struct tm y2k = { 0 };
	struct tm y1k = { 0 };//初始化
	double seconds;
	cout << "请输入日期1:" << endl;
	cin >> a >> b >> c;
	cout << "请输入日期2" << endl;
	cin >> d >> e >> f;
	y2k.tm_year = a-1900;//年份必须是1900年之后
	y2k.tm_mon = b-1;//月份的取值范围为【0,11】
	y2k.tm_mday = c;//日期取值范围为【1,31】
	y1k.tm_year = d-1900;
	y1k.tm_mon = e-1;
	y1k.tm_mday = f;
	if (a > d)
		seconds = difftime(mktime(&y2k), mktime(&y1k));//前面的时间戳要大于后面的时间戳作为end
	if (a < d)
		seconds = difftime(mktime(&y1k), mktime(&y2k));
	if (a == d) {
		if(b > e) seconds = difftime(mktime(&y2k), mktime(&y1k));
		if(b < e) seconds = difftime(mktime(&y1k), mktime(&y2k));
		if (b == e) {
			if(c > f) seconds = difftime(mktime(&y2k), mktime(&y1k));
			if(c < f) seconds = difftime(mktime(&y1k), mktime(&y2k));
			if (c == f) seconds = difftime(mktime(&y2k), mktime(&y1k));
		}
	}
	n = (int)seconds / 86400;//一天有86400秒
	printf("%d", n);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值