📄 date.cpp
字号:
/*****************************
* 日期演示程序(实现文件)
* 达内,陈宗权,2006/8
*****************************/
#include <iostream>
using namespace std;
#include "date.h"//包含声明
//输入一个日期,返回是否有效
DATE input()
{
DATE d;
cout << "input date(yyyy mm dd): " << endl;
cin >> d.year >> d.month >> d.day;
return d;
}
//输出一个日期
void output( DATE p )
{
cout<<p.year << '-' << p.month << '-' << p.day;
}
//判断一个日期是否有效
bool isValid( DATE p )
{
return p.year>=1 && p.month>=1&&p.month<=12
&& p.day>=1 &&
p.day<=daysOfMonth( p.year,p.month );
}
//计算一个月的天数
int daysOfMonth( int year, int month )
{
int dm[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if( month==2 )
return isLeap( year )?29:28;
return dm[month-1];
}
//判断一个年份是否是闰年
bool isLeap( int year )
{
return year%4==0&&year%100!=0 || year%400==0;
}
//比较两个日期的大小
int compare( DATE p1, DATE p2 )
{
if( p1.year != p2.year )
return p1.year - p2.year;
if( p1.month != p2.month )
return p1.month - p2.month;
return p1.day - p2.day;
}
//比较两个日期的大小
int distance( DATE p1, DATE p2 )
{
int d1 = daysOfDate( p1 );
int d2 = daysOfDate( p2 );
return d1>d2?(d1-d2):(d2-d1);
}
//显示一个日期是星期几
void showWeekday( DATE pd )
{
char week[7][10] = { "Sun.","Mon.","Tue.","Wed.",
"Thu.","Fri.","Sat."};
cout << week[ daysOfDate(pd)%7 ] << endl;
}
//计算从公元元年元旦到指定日期是第几天
int daysOfDate( DATE p )
{
int sum=0;
for( int y=1; y<p.year; y++ )
sum += daysOfYear( y );
for( int m=1; m<p.month; m++ )
sum += daysOfMonth( p.year, m );
sum += p.day;
return sum;
}
//计算一年的天数
int daysOfYear( int year )
{
return isLeap( year )?366:365;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -