⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 date.cpp

📁 一个通讯录的小程序
💻 CPP
字号:
#include <stdio.h>
#include "Date.h"

////////////////////////////////////////////////////////////////////////////////
// 日期处理函数
////////////////////////////////////////////////////////////////////////////////

// 判断闰年
bool IsLeap(int y) {
	return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
}

// 月天数
int Dom(int y, int m) {
	static unsigned char aDom[13] = {
		0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
	};
	int s;
	if (m < 1 || m > 12) m = 0; // 容错处理
	s = aDom[m];
	if (m == 2 && IsLeap(y)) s ++;
	return s;
}

// 判断有效日期
bool IsDate(int y, int m, int d) {
	return y > 0 && m >= 1 && m <= 12 && d >= 1 && d <= Dom(y, m);
}

// 格式输入: yyyy-mm-dd
void DateInput(const char *prompt, DATE *p) {
	int y, m, d;
	char c1, c2;
	printf("%s", prompt);
	while (scanf(" %4d %1c %2d %1c %2d", &y, &c1, &m, &c2, &d) != 5
		|| ! IsDate(y, m, d) || c1 != '-' || c2 != '-') {
		printf("不正确的日期, 请重新输入(如: 2000-2-14): \a");
		fflush(stdin);
	}
	p->year = y;
	p->month = (char) m;
	p->day = (char) d;
}

// 格式输出: yyyy-mm-dd
void DateOutput(const DATE *p) {
	printf("%04d-%02d-%02d", p->year, p->month, p->day);
}

// 日期比较
// 若*p1 > *p2, 返回正数
// 若*p1 < *p2, 返回负数
// 若*p1 = *p2, 返回零值
int DateCmp(const DATE *p1, const DATE *p2) {
	int r = p1->year - p2->year;
	if (!r) {
		r = p1->month - p2->month;
		if (!r) {
			r = p1->day - p2->day;
		}
	}
	return r;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -