C++自定义日期类

今天仲浤2周岁了。

int 返回月的天数(int N, int Y)
{//缘由https://bbs.csdn.net/topics/395074486
	return (Y == 2 ? ((!(N % 4) && (N % 100)) || !(N % 400) ? 29 : 28) : (((Y <= 7 && Y % 2) || (Y>7 && !(Y % 2))) ? 31 : 30));
}
class  自定义的日期类
{//缘由https://bbs.csdn.net/topics/395300443
	int  年, 月, 日;//数据成员,表示当前日期的年、月、日
public:
	自定义的日期类(int  年值 = 1, int  月值 = 1, int  日值 = 1) //构造函数,设定年、月、日;并设置参数默认值
	{		年 = 年值;		月 = 月值;		日 = 日值;	}
	void  增加一天();
	int 计算年的第几天();
	bool 判断是否闰年();
	int 确定日期周几(bool 选);
	int 二日期相减(自定义的日期类  定义的日期);
	bool  二日期相等(自定义的日期类  定义的日期);
	void  屏幕输出日期对象的有关数据(年、月、日)()
	{
		int 月日 = 计算月的天数(年, 月);
		if (月日 <= 日)日 = 月日;//纠正输入月的日子
		cout << 年 << ":" << 月 << ":" << 日 << endl;
	}
};
void  自定义的日期类::增加一天()
{
	int 月日 = 计算月的天数(年, 月);
	if (月日 < 日)日 = 月日;//纠正输入月的日子
	if (计算月的天数(年, 月) > 日)++日; else ++月, 日 = 1;
	if (月 > 12)++年, 月 = 1;
}
bool  自定义的日期类::二日期相等(自定义的日期类  定义的日期)
{
	return (定义的日期.年 == 年&&定义的日期.月 == 月&&定义的日期.日 == 日);
}
int 自定义的日期类::二日期相减(自定义的日期类  定义的日期)
{
	int 后日子 = 0, 前日子 = 0, 前年日 = 0, 判 = 定义的日期.年 - 年, 计年 = 定义的日期.年 - 1, 计月 = 12;
	if (判)计月 = 12;
	while (判--)
	{
		while (计月) 前年日 += 计算月的天数(计年, 计月--);
		计月 = 12; --计年;
	}
	计月 = 月;	while (--计月)前日子 += 计算月的天数(年, 计月);	前日子 += 日;
	计月 = 定义的日期.月;	while (--计月)后日子 += 计算月的天数(定义的日期.年, 计月);	后日子 += 定义的日期.日;
	return 前年日 + (后日子 - 前日子);
}
int 自定义的日期类::确定日期周几(bool 选 = false)
{
	int 计算年 = 年, 总天数 = (((--计算年) ? 365 * 计算年 + (计算年 / 4 - 计算年 / 100 + 计算年 / 400) : 0) + 计算年的第几天());
	return 选 ? 总天数 : 总天数 % 7;
}
int 自定义的日期类::计算年的第几天()
{
	int 日子 = 0, 计算月 = 月;
	while (--计算月)日子 += 计算月的天数(年, 计算月); 日子 += 日;
	return 日子;
}
bool  自定义的日期类::判断是否闰年()
{ 
	return (返回月的天数(年, 2) == 28 ? 0 : 1);
	//return (((!(年 % 4) && 年 % 100) || !(年 % 400)) ? 1 : 0);
};

	int 年值 = 0, 月值 = 0, 日值 = 0, 年值1 = 0, 月值1 = 0, 日值1 = 0;
	cin >> 年值 >> 月值 >> 日值 >> 年值1 >> 月值1 >> 日值1;
	自定义的日期类 年月日(年值, 月值, 日值), 年月日1(年值1, 月值1, 日值1);
	年月日.屏幕输出日期对象的有关数据(年、月、日)();
	年月日1.屏幕输出日期对象的有关数据(年、月、日)();
	cout << (年月日.判断二日期是否相等(年月日1) ? "相等" : "不等") << endl;
	年月日.增加一天();
	年月日.屏幕输出日期对象的有关数据(年、月、日)();
	年月日1.增加一天();
	年月日1.屏幕输出日期对象的有关数据(年、月、日)();
	自定义的日期类 年月日(2018, 12, 16), 年月日1(2019, 12, 16);//前-后,与微软后-前不同
	cout << 年月日.二日期相减(年月日1) << endl;
	int 周几 = 年月日1.确定日期周几();
	自定义的日期类 年月日(2018, 7, 1), 年月日1(2019, 6, 1);//前-后,与微软后-前不同
	int 闰年 = 2019;
	cout << to_string(年月日.二日期相减(年月日1))+"天" 
		<< ((年月日.判断是否闰年() || 年月日1.判断是否闰年()) ? "闰年" : "平年")
		<< (年月日.二日期相减(年月日1) >= ((年月日.判断是否闰年() || 年月日1.判断是否闰年()) ? 366 : 365) ? "满一年" : "不足年") << endl;
	自定义的日期类 年月日(2018, 7, 1), 年月日1(2019, 6, 1);//前-后,与微软后-前不同
	cout << 年月日1.确定日期周几(true) - 年月日.确定日期周几(true) << endl;//与微软后-前同

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值