/// <summary> /// Промежуток времени. При кол-ве дней меньше daysLimit показываются часы и минуты. /// </summary> /// <param name="ts"></param> /// <param name="daysLimit">Через сколько дней показывать часы и минуты</param> /// <param name="sameAndNegative"></param> /// <returns></returns> public static string GetTimeSpanString(TimeSpan ts, int daysLimit, string sameAndNegative = "same") { if (ts < TimeSpan.Zero || ts.TotalMinutes < 1) { return(sameAndNegative); } var sb = new StringBuilder(); var i = PluralsHelper.GetPluralEnding(ts.Days); if (ts.Days > 0) { sb.Append("{0:%d} "); sb.Append(PluralsHelper.days[i]); if (ts.Days < daysLimit) { sb.Append(" "); } } if (ts.Days < daysLimit) { sb.Append("{0:%h} ч"); if (ts.Minutes > 0) { sb.Append(" {0:%m} м"); } } return(string.Format(sb.ToString(), ts)); }
public static string GetAgeString(int?y, int?m, int?d, DateTime now) { var age = DateHelper.GetAge(y, m, d, now); if (age == null) { return(string.Empty); } var index = PluralsHelper.GetPluralEnding(age.Value); return(string.Format("{0} {1}", age, PluralsHelper.years[index])); }
/// <summary> /// Дата относительно сейчас. /// </summary> /// <param name="date"></param> /// <returns></returns> public static string GetRelativeDateString(DateTime date, string ending = "назад") { TimeSpan s = DateTime.Now.Subtract(date); int dayDiff = (int)s.TotalDays; int secDiff = (int)s.TotalSeconds; if (dayDiff < 0) // future { return(date.ToString("dd.MM.yyyy hh:mm")); } if (dayDiff == 0) { if (secDiff < 2 * 60) { return("только что"); } if (secDiff < 3600) // час { var min = (int)Math.Floor((double)secDiff / 60); var minsPlural = PluralsHelper.minutes[PluralsHelper.GetPluralEnding(min)]; return(string.Format("{0} {1} {2}", min, minsPlural, ending)); } if (secDiff < 7200) // 2 часа { return(string.Format("час {0}", ending)); } if (secDiff < 86400) // сутки { return(string.Format("{0} ч. {1}", Math.Floor((double)secDiff / 3600), ending)); } } if (dayDiff == 1) { return("вчера"); } if (dayDiff < 7) { var daysPlural = PluralsHelper.days[PluralsHelper.GetPluralEnding(dayDiff)]; return(string.Format("{0} {1} {2}", dayDiff, daysPlural, ending)); } return(date.ToString("dd.MM.yyyy")); }