class Program
{
static void Main(string[] args)
{
int n;
Date d = new Date(2007,1,1);
Console.Write("当前日期:");
Console.WriteLine("{0}年{1}月{2}日",d.Year,d.Month,d.Day);
Console.Write("要知道多少天后的日期,请输入:");
n =int.Parse( Console.ReadLine());
Console.Write("{0}天后的日期:",n);
d.NextDay(n);
Console.WriteLine(d.ToString());
Console.ReadKey();
}
}
class Date
{
int year;
int month;
int day;
public Date()
{
year = 1900;
month = 1;
day = 1;
}
public Date(int year, int month, int day)
{
Year = year;
Month = month;
Day = day;
}
public Date SetDate(int year, int month, int day)
{
Year = year;
Month = month;
Day = day;
return this;
}
public new string ToString()
{
int y = (Year > 0 ? Year : -Year);
string date = y.ToString() + "年" + Month.ToString() + "月" + Day.ToString() + "日";
return Year >= 0 ? "公元" + date : "公元前" + date;
}
public int Year
{
get
{
return year;
}
set
{
year = value;
}
}
public int Month
{
get
{
return month;
}
set
{
if (value <= 12 && value >= 1)
{
month = value;
}
else
{
throw new Exception("错误的月份");
} }
}
public int Day
{
get
{
return day;
}
set
{
bool flag = true;
if (value > 31 || value < 1)
{
flag = false;
}
else
{
int t = MonthType(month);
switch (t)
{
case 0: if (Run_nan(Year) && value > 29 || !Run_nan(Year) && value < 28)
flag = false;
break;
case 1: if (value > 30)
flag = false;
break;
case 2: if (value > 31)
flag = false;
break;
}
}
if (flag == true)
{
day = value;
}
else
{
throw new Exception("错误日期");
}
}
}
public static bool Run_nan(int year)//是否为闰年
{
int y;
y=(year>0?year:-year);
return (y%400==0||(y%4==0&&y%100!=0));
}
private int MonthType(int month)//月的类型,平月,小月,大月
{
if (month > 12 || month < 1)
{
return -1;
}
if (month == 2)
{
return 0;
}
if (month == 4 || month == 6 || month == 9 || month == 11)
{
return 1;
}
else
{
return 2;
}
}
public Date NextDay(int n)//N天后的日期
{ int i;
for (i = 0; i < n; i++)
{
try
{
Day += 1;
} catch
{
try
{
Day = 1;
Month += 1;
}
catch
{
Month = 1;
Year += 1;
}
}
}
return this;
}
}
如果是闰年,就没有问题,如果不是闰年,就有错了。我找不出错在哪了,请帮找一下。
{
static void Main(string[] args)
{
int n;
Date d = new Date(2007,1,1);
Console.Write("当前日期:");
Console.WriteLine("{0}年{1}月{2}日",d.Year,d.Month,d.Day);
Console.Write("要知道多少天后的日期,请输入:");
n =int.Parse( Console.ReadLine());
Console.Write("{0}天后的日期:",n);
d.NextDay(n);
Console.WriteLine(d.ToString());
Console.ReadKey();
}
}
class Date
{
int year;
int month;
int day;
public Date()
{
year = 1900;
month = 1;
day = 1;
}
public Date(int year, int month, int day)
{
Year = year;
Month = month;
Day = day;
}
public Date SetDate(int year, int month, int day)
{
Year = year;
Month = month;
Day = day;
return this;
}
public new string ToString()
{
int y = (Year > 0 ? Year : -Year);
string date = y.ToString() + "年" + Month.ToString() + "月" + Day.ToString() + "日";
return Year >= 0 ? "公元" + date : "公元前" + date;
}
public int Year
{
get
{
return year;
}
set
{
year = value;
}
}
public int Month
{
get
{
return month;
}
set
{
if (value <= 12 && value >= 1)
{
month = value;
}
else
{
throw new Exception("错误的月份");
} }
}
public int Day
{
get
{
return day;
}
set
{
bool flag = true;
if (value > 31 || value < 1)
{
flag = false;
}
else
{
int t = MonthType(month);
switch (t)
{
case 0: if (Run_nan(Year) && value > 29 || !Run_nan(Year) && value < 28)
flag = false;
break;
case 1: if (value > 30)
flag = false;
break;
case 2: if (value > 31)
flag = false;
break;
}
}
if (flag == true)
{
day = value;
}
else
{
throw new Exception("错误日期");
}
}
}
public static bool Run_nan(int year)//是否为闰年
{
int y;
y=(year>0?year:-year);
return (y%400==0||(y%4==0&&y%100!=0));
}
private int MonthType(int month)//月的类型,平月,小月,大月
{
if (month > 12 || month < 1)
{
return -1;
}
if (month == 2)
{
return 0;
}
if (month == 4 || month == 6 || month == 9 || month == 11)
{
return 1;
}
else
{
return 2;
}
}
public Date NextDay(int n)//N天后的日期
{ int i;
for (i = 0; i < n; i++)
{
try
{
Day += 1;
} catch
{
try
{
Day = 1;
Month += 1;
}
catch
{
Month = 1;
Year += 1;
}
}
}
return this;
}
}
如果是闰年,就没有问题,如果不是闰年,就有错了。我找不出错在哪了,请帮找一下。
没必要搞那么复杂。。
DataTime dt=DateTime.Parse("2007-07-01");
DateTime dt1=dt.AddDays(-6);//6天前
DateTime dt2=dt.AddDays(10);//10天后