public static string DateDiffShort(DateTime first, DateTime sec, string beforeTemplate = "{0}", string afterTemplate = "{0}") { if (first < DateTime.MinValue) { first = DateTime.MinValue; } if (sec < DateTime.MinValue) { sec = DateTime.MinValue; } if (first > DateTime.MaxValue) { first = DateTime.MaxValue; } if (sec > DateTime.MaxValue) { sec = DateTime.MaxValue; } bool after = first > sec; DateTimeSpan dateDiff = DateTimeSpan.CompareDates(first, sec); string txtDiff = string.Empty; if (dateDiff.Years > 0) { txtDiff = Devmasters.Lang.CS.Plural.Get(dateDiff.Years, "rok;{0} roky;{0} let"); } else if (dateDiff.Months > 3) { txtDiff = Devmasters.Lang.CS.Plural.Get(dateDiff.Months, "měsíc;{0} měsíce;{0} měsíců"); } else { txtDiff = Devmasters.Lang.CS.Plural.GetWithZero(dateDiff.Days, "dnes", "den", "{0} dny", "{0} dnů"); } if (after) { return(string.Format(afterTemplate, txtDiff)); } else { return(string.Format(beforeTemplate, txtDiff)); } }
public static string FormatInterval(TimeSpan ts, System.Globalization.CultureInfo culture) { var end = DateTime.Now; DateTimeSpan dts = DateTimeSpan.CompareDates(end - ts, end); string s = ""; if (dts.Years > 0) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Years, culture, "rok", "{0} roky", "{0} let"); } if (dts.Months > 0) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Months, "měsíc;{0} měsíce;{0} měsíců", culture); } if (dts.Days > 0) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Days, "den;{0} dny;{0} dnů", culture); } if (dts.Hours > 0) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Hours, "hodinu;{0} hodiny;{0} hodin", culture); } if (dts.Minutes > 0) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Minutes, "minutu;{0} minuty;{0} minut", culture); } if (dts.Seconds > 0) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Seconds, "sekundu;{0} sekundy;{0} sekund", culture); } if (dts.Milliseconds > 0) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Milliseconds, "{0} ms;{0} ms;{0} ms", culture); } return(s.Trim()); }
public static string FormatIntervalSinglePart(TimeSpan ts, DateTimePart minDatePart, string numFormat = "N1") { var end = DateTime.Now; DateTimeSpan dts = DateTimeSpan.CompareDates(end - ts, end); string s = ""; if (dts.Years > 0 && minDatePart > DateTimePart.Year) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Years, "{0} rok;{0} roky;{0} let"); } else if (dts.Years > 0) { decimal part = dts.Years + dts.Months / 12m; if (part % 1 > 0) { s += string.Format(" {0:" + numFormat + "} let", part); } else { s += Devmasters.Lang.CS.Plural.Get((int)part, " {0} rok; {0} roky; {0} let"); }; return(s); } if (dts.Months > 0 && minDatePart > DateTimePart.Month) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Months, "{0} měsíc;{0} měsíce;{0} měsíců"); } else if (dts.Months > 0) { decimal part = dts.Months + dts.Days / 30m; if (part % 1 > 0) { s += string.Format(" {0:" + numFormat + "} měsíců", part); } else { s += Devmasters.Lang.CS.Plural.Get((int)part, " {0} měsíc; {0} měsíce; {0} měsíců"); }; return(s); } if (dts.Days > 0 && minDatePart > DateTimePart.Day) { s = " " + Devmasters.Lang.CS.Plural.Get(dts.Days, " {0} den;{0} dny;{0} dnů"); } else if (dts.Days > 0) { decimal part = dts.Days + dts.Hours / 24m; if (part % 1 > 0) { s = " " + string.Format(" {0:" + numFormat + "} dní", part); } else { s = " " + Devmasters.Lang.CS.Plural.Get((int)part, " {0} den;{0} dny;{0} dnů"); }; return(s); } if (dts.Hours > 0 && minDatePart > DateTimePart.Hour) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Hours, " {0} hodinu;{0} hodiny;{0} hodin"); } else if (dts.Hours > 0) { decimal part = dts.Hours + dts.Minutes / 60m; if (part % 1 > 0) { s += string.Format(" {0:" + numFormat + "} hodin", part); } else { s += " " + Devmasters.Lang.CS.Plural.Get((int)part, " {0} hodinu;{0} hodiny;{0} hodin"); } return(s); } if (dts.Minutes > 0 && minDatePart > DateTimePart.Minute) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Minutes, "minutu;{0} minuty;{0} minut"); } else if (dts.Minutes > 0) { decimal part = dts.Minutes + dts.Seconds / 60m; if (part % 1 > 0) { s += string.Format(" {0:" + numFormat + "} minut", part); } else { s += " " + Devmasters.Lang.CS.Plural.Get((int)part, "minutu;{0} minuty;{0} minut"); }; return(s); } if (dts.Seconds > 0 && minDatePart > DateTimePart.Second) { s += " " + Devmasters.Lang.CS.Plural.Get(dts.Seconds, "sekundu;{0} sekundy;{0} sekund"); } else { decimal part = dts.Seconds + dts.Milliseconds / 1000m; if (part % 1 > 0) { s += string.Format(" {0:" + numFormat + "} sekund", part); } else { s += " " + Devmasters.Lang.CS.Plural.Get((int)part, "sekundu;{0} sekundy;{0} sekund"); }; return(s); } //if (dts.Milliseconds > 0) // s += " " + Devmasters.Lang.CS.Plural.Get(dts.Milliseconds, "{0} ms;{0} ms;{0} ms"); return(s.Trim()); }