/// <summary>
/// 得到日期间隔如:X年X月X天
/// </summary>
/// <param name="dtMax"></param>
/// <param name="dtMin"></param>
/// <returns></returns>
public static string GetDateInterval(DateTime dt1, DateTime dt2)
{
DateTime dtMax = dt2 > dt1 ? dt2 : dt1;//开始时间
DateTime dtMin = dt2 > dt1 ? dt1 : dt2;//结束时间
int year = dtMax.Year - dtMin.Year;
int month = dtMax.Month - dtMin.Month;
int day = dtMax.Day - dtMin.Day;
int sumDay = Convert.ToDateTime(dtMin.ToString("yyyy-MM")).AddMonths(1).AddDays(-1).Day;
if (dtMax.Month <= dtMin.Month)
{
year--;
month += 12;
}
if (month == 12)
{
year++;
month -= 12;
}
if (dtMax.Day < dtMin.Day)
{
month--;
day += sumDay;
}
return $"{year}年{month}月{day}天";
}
static void Main(string[] args)
{
DateTime startTime = Convert.ToDateTime("2019-04-29");
DateTime endTime = Convert.ToDateTime("2019-09-30");
Console.WriteLine(GetDateInterval(startTime, endTime));
Console.WriteLine(GetDateInterval(endTime, startTime));
//输出:0年5月1天
}