高分求算法!急!!!!

Anson1979324 2003-10-17 11:31:33
我想求出两个日期的天数差(要考虑润年,大小月)最好给我完整代码,试了正确马上给分!!!
...全文
45 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anson1979324 2003-10-17
  • 打赏
  • 举报
回复
别急,知道了 ^-^!
Nicholasqpl 2003-10-17
  • 打赏
  • 举报
回复
我提供你一些代码。你试试
using System;

namespace DateTime001
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Datetime1
{
private static int[] notleapmonthday={31,28,31,30,31,30,31,31,30,31,30,31};
private static int[] leapmonthday={31,29,31,30,31,30,31,31,30,31,30,31};
private int year,month,day;

public Datetime1()
{
setDate(2000,1,1);
}

public Datetime1(int y,int m,int d)
{
setDate(y,m,d);
}

public void setDate(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
private int getYear()
{
return year;
}
private int getMonth()
{
return month;
}
private int getDay()
{
return day;
}

private static bool leapyear(int y)
{
if (y%4==0&&y%100!=0||y%400==0)
return true;
else
return false;

}

public static int getdayofmonth(int y,int m)
{
int year=y;
if (leapyear(year))
{
return leapmonthday[m-1];
}
else
{
return notleapmonthday[m-1];
}
}

public static int getdaynum(Datetime1 d)
{
int num=0;
for (int i=d.getYear()-1;i>=1900;i--)
if (leapyear(i))
num+=366;
else
num+=365;

for (int i=d.getMonth()-1;i>=1;i--)
{
num+=getdayofmonth(d.getYear(),i);
}
num+=d.getDay();
return num;
}
//计算某年某月的天数
public static int getDayNum(int y,int m)
{
int[] leap={31,29,31,30,31,30,31,31,30,31,30,31};
int[] notleap={31,28,31,30,31,30,31,31,30,31,30,31};
if (y%4==0&&y%100!=0||y%400==0)
return leap[m];
else
return notleap[m];
}


public static int DateMinus(Datetime1 dt1,Datetime1 dt2)
{
int num1=getdaynum(dt1);
int num2=getdaynum(dt2);
return (num2-num1);
}
}
}
以上这是类摸块的
下面是如何在Form中调用(你应该能看懂)
private void Form1_Load(object sender, System.EventArgs e)
{
this.txtnow.Text=date.ToShortDateString();

// this.txtnowdate.Text=date.ToShortDateString();
// this.txtyear.Text=date.Year.ToString();
// this.txtmonth.Text=date.Month.ToString();
// this.txtday.Text=date.Day.ToString();
}

private void btnok_Click(object sender, System.EventArgs e)
{
if(this.txtoldtime.Text!="")
{
int i;
int days;
int year,month,day;
int yearold,monthold,dayold;
DateTime dateold=Convert.ToDateTime(this.txtoldtime.Text);
yearold=Convert.ToInt32(dateold.Year);
monthold=Convert.ToInt32(dateold.Month);
dayold=Convert.ToInt32(dateold.Day);
year=Convert.ToInt32(date.Year);
month=Convert.ToInt32(date.Month);
day=Convert.ToInt32(date.Day);
DateTime001.Datetime1 dtnow=new DateTime001.Datetime1(year,month,day);
DateTime001.Datetime1 dtold=new DateTime001.Datetime1(yearold,monthold,dayold);
days=Convert.ToInt32(DateTime001.Datetime1.DateMinus(dtold,dtnow));
this.txtcha.Text=days.ToString();
}
else
{
MessageBox.Show("未输入日期","!!!!",MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

}
}
}
}
肯定能用!马上给分(-:

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧