/// <summary>
/// 计算两个日期间隔的年月日
/// </summary>
/// <param name="MinDate"></param>
/// <param name="MaxDate"></param>
/// <returns></returns>
public static string GetDiffDate(DateTime MinDate, DateTime MaxDate)
{
string result = "";
GetDiffDateModel flag = new GetDiffDateModel();
GetDiffDateModel _minDate = new GetDiffDateModel();
_minDate.Year = MinDate.Year;
_minDate.Month = MinDate.Month;
_minDate.Day = MinDate.Day;
GetDiffDateModel _maxDate = new GetDiffDateModel();
_maxDate.Year = MaxDate.Year;
_maxDate.Month = MaxDate.Month;
_maxDate.Day = MaxDate.Day;
//只比较年月日
DateTime _MinDate = new DateTime(MinDate.Year, MinDate.Month, MinDate.Day);
DateTime _MaxDate = new DateTime(MaxDate.Year, MaxDate.Month, MaxDate.Day);
int flageDay = 0;
//防呆
if (_MinDate >= _MaxDate)
{
result = "开始日期大于截止日期!";
return result;
}
//年
flag.Year = _maxDate.Year - _minDate.Year;
if (flag.Year <= 0) { flag.Year = 0; }
//月
if (_maxDate.Month < _minDate.Month)
{
if (flag.Year <= 0)
{
result = "年份计算异常!";
return result;
}
else
{
flag.Year--;
}
flag.Month = (_maxDate.Month + 12) - _minDate.Month;
}
else
{
flag.Month = _maxDate.Month - _minDate.Month;
}
//日
if (_maxDate.Day < _minDate.Day)
{
if (flag.Month <= 0)
{
flag.Year--;
flag.Month = 12;
}
if (_maxDate.Month==1)
{
_maxDate.Month =12;
}
else
{
_maxDate.Month = _maxDate.Month - 1;
}
switch (_maxDate.Month)
{
case 2:
flageDay = DateTime.DaysInMonth(_maxDate.Year, _maxDate.Month);
int year = _maxDate.Year;
if (year % 4 == 0 && year % 100 != 0)
{
if (flageDay == 29 && _maxDate.Day == 29)
{
flag.Day = 0;
flag.Month++;
}
else
{
flag.Day = _maxDate.Day + 29 - (_minDate.Day);
}
}
else
{
if (flageDay == 28 && _maxDate.Day == 28)
{
flag.Day = 0;
flag.Month++;
}
else
{
flag.Day = _maxDate.Day + 28 - (_minDate.Day);
}
}
break;
}
if (_maxDate.Month == 1 || _maxDate.Month == 3 || _maxDate.Month == 5 || _maxDate.Month == 7 || _maxDate.Month == 8 || _maxDate.Month == 10 || _maxDate.Month == 12)
{
if (_maxDate.Day == 31)
{
flag.Day = 0;
flag.Month++;
}
else
{
flag.Day = _maxDate.Day+31 - (_minDate.Day);
}
}
else if (_maxDate.Month == 4 || _maxDate.Month == 6 || _maxDate.Month == 9 || _maxDate.Month == 11)
{
if (_maxDate.Day == 30)
{
flag.Day = 0;
flag.Month++;
}
else
{
flag.Day = _maxDate.Day + 30 - (_minDate.Day);
}
}
flag.Month--;
}
else
{
flag.Day = _maxDate.Day - _minDate.Day;
}
//格式化文本年月日
if (flag.Day > 0)
{
if (flag.Day == 31)
{
flag.Month++;
flag.Day = 0;
}
else
{
if (flag.Year > 0 || flag.Month > 0)
{
result = "零" + flag.Day.ToString() + "天";
}
else
{
result = flag.Day.ToString() + "天";
}
}
}
if (flag.Month > 0)
{
if (flag.Day == 12)
{
flag.Year++;
flag.Month = 0;
}
else
{
result = flag.Month.ToString() + "个月" + result;
}
}
if (flag.Year > 0) { result = flag.Year.ToString() + "年" + result; }
return result;
}
}
05-10