编码能力不是很强,有没有很好的计算方式ε=(´ο`*)))!!!求解!!!
/// <summary>
/// 日期间隔计算
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private static string Duration(DateTime dt)
{
DateTime now = DateTime.Now;
int second = now.Second - dt.Second;
int min = now.Minute - dt.Minute;
int hour = now.Hour - dt.Hour;
int day = now.Day - dt.Day;
int month = now.Month - dt.Month;
int year = now.Year - dt.Year;
int sumDay = Convert.ToDateTime(dt.ToString("yyyy-MM")).AddMonths(1).AddDays(-1).Day;
TimeSpan ts = now - dt;
if (now.Second < dt.Second)
{
min--;
second += 60;
}
if (now.Minute < dt.Minute)
{
hour--;
min += 60;
}
if (now.Hour < dt.Hour)
{
day--;
hour += 24;
}
if (now.Day < dt.Day)
{
month--;
day += sumDay;
}
if (now.Month <= dt.Month)
{
year--;
month += 12;
}
if (month == 12)
{
year++;
month -= 12;
}
string result = "";
if (year >= 1)
{
result = $"{year}年前";
}
else if (month >= 1)
result = $"{month}个月前";
else if (day >= 1)
result = $"{day}天前";
else if (hour >= 1)
result = $"{hour}小时前";
else if (min >= 1)
result = $"{min}分钟前";
else
result = $"{second}秒前";
return result;
}