【C++基础】实现一个日期类

这篇博客介绍了如何在C++中实现一个日期类,包括判断日期合法性(特别是闰年的二月)以及通过运算符重载进行日期比较。重点讨论了计算两个日期之间相差天数的方法,通过迭代直到两个日期相等来获取天数差。博主提供了完整的类定义(Date.h和Date.cpp)代码。
摘要由CSDN通过智能技术生成

又是一个昏昏欲睡的下午~好了不多说,开始总结自己写的代码吧

我写这个日期类,一个是判断输入的时期是否合法,也就是在构造函数那块,还有一个是运算符重载的时候

先讲一下如何判断日期是否合法,写一个函数返回当前月的天数,代码如下:


//判断闰年
bool Date::isleap(int year) {
	if ((_year % 4 == 0 && _year % 100 != 0) || (_year % 400 == 0)) {
		return true;
	}
	return false;
}
//求出当前月的天数
int Date::_GetMonthDay(int year, int month) {
	//对year和month的合法性进行判断
	assert(month > 0 && month < 13);
	assert(year >= 0);
	//不同月份的天数
	int arr_month[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	if (isleap(year) && month == 2) {
		//是闰年的二月,就把二月的天数+1
		return arr_month[month] + 1;
	}
	return arr_month[month];
}

因为闰年的二月是29天,所以需要判断当前年月是否是闰年的二月

运算符重载的一些操作就不说了,都是一些细节性的问题,在判断两个日期类大于小于大于等于之类的时候,只需要实现两个操作符,一个等于,和一个大于或者小于的函数,其他的都可以调用这两个函数来实现了

这里主要讲一讲求出两个日期之间的时间

//两个日期相隔天数
int Date::operator-(const Date& d) {
	int day = 0;
	Date Max, Min;
	if (*this > d) {
		Max = *this;
		Min = d;
	}
	else {
		Max = d;
		Min = *this;
	}
	while (Min != Max) {
		--Max;
		++day;
	}
	return day;
}

用一个day变量来存储天数,然后找出两个日期之间较大的,让它进行自减操作再让day变量进行自增操作直到两个日期类相等,这样就计算出了两个日期类之间的变量

其实一个日期类是个比较简单的类,下面是全部的代码:

Date.h

#pragma once

#include<iostream>

using namespace s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值