using System; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Globalization; namespace AbrBlazorTools { public static class DateTimeExtension { public static string ComputedDateTime(this DateTime InsertDateTime) { var persianCalender = new PersianCalendar(); var year = persianCalender.GetYear(InsertDateTime); var month = persianCalender.GetMonth(InsertDateTime); var day = persianCalender.GetDayOfMonth(InsertDateTime); var hour = persianCalender.GetHour(InsertDateTime); var minute = persianCalender.GetMinute(InsertDateTime); var second = persianCalender.GetSecond(InsertDateTime); var computed = String.Format("{0}-{1}-{2}-{3}{4}{5}", year, month < 10 ? String.Format("0{0}", month) : month.ToString(), day < 10 ? String.Format("0{0}", day) : day.ToString(), hour < 10 ? string.Format("0{0}", hour) : hour.ToString(), minute < 10 ? string.Format("0{0}", minute) : minute.ToString(), second < 10 ? string.Format("0{0}", second) : second.ToString()); return computed; } public static string GetPersianDate(this DateTime value, bool showDayName, bool showMonthName, bool showTime) { if (Services.Statics.Culture == Services.Statics.CultureType.En) return value.ToString(); var persianCalender = new PersianCalendar(); var year = persianCalender.GetYear(value); var month = persianCalender.GetMonth(value); var day = persianCalender.GetDayOfMonth(value); var s = string.Format(showMonthName ? "{2} {1} {0}" : "{0}/{1}/{2}", year, showMonthName ? month.GetMonthName() : month.ToString(""), day); if (showDayName) s = string.Format("{0} {1}", persianCalender.GetDayOfWeek(value).GetDayName(), s); if (showTime) s = string.Format("{0} {1}:{2}", s, value.Hour, value.Minute); return s; } public static string GetPersianDayName(this DateTime value) { var persianCalender = new PersianCalendar(); var s = persianCalender.GetDayOfWeek(value).GetDayName(); return s; } public static string GetPersianMonthName(this DateTime value) { var persianCalender = new PersianCalendar(); var s = persianCalender.GetMonth(value).GetMonthName(); return s; } public static int GetPersianDayInt(this DateTime value) { var persianCalender = new PersianCalendar(); var s = persianCalender.GetDayOfMonth(value); return s; } public static string GetPersianDate(this DateTime value) { return value.GetPersianDate(true, true, true); } public static string GetPersianDate(this DateTime? value) { return value.HasValue ? value.Value.GetPersianDate(true, true, true) : ""; } public static string GetPersianDate(this DateTime? value, bool showDayName) { return value.HasValue ? value.Value.GetPersianDate(showDayName, false, false) : ""; } public static string GetPersianDate(this DateTime value, bool showDayName) { return value.GetPersianDate(showDayName, false, false); } public static string GetPersianDate(this DateTime value, bool showDayName, bool showTime) { return value.GetPersianDate(showDayName, false, showTime); } public static string GetPersianDateAsText(this DateTime value, bool showDayName, bool showTime) { value=value.ToUniversalTime().ToLocalTime(); var minutes = (int)DateTime.Now.Subtract(value).TotalMinutes; var seconds = (int)DateTime.Now.Subtract(value).TotalSeconds; if (minutes < 1) if (Services.Statics.Culture == Services.Statics.CultureType.Fa) return $"{seconds} ثانیه قبل"; else return $"{seconds} Second(s) ago"; else if (minutes < 60) if (Services.Statics.Culture == Services.Statics.CultureType.Fa) return $"{minutes} دقیقه قبل"; else return $"{minutes} Minute(s) ago"; return value.GetPersianDate(showDayName, false, showTime); } private static string GetMonthName(this int month) { switch (month) { case 1: return "فروردین"; case 2: return "اردیبهشت"; case 3: return "خرداد"; case 4: return "تیر"; case 5: return "امرداد"; case 6: return "شهریور"; case 7: return "مهر"; case 8: return "آبان"; case 9: return "آذر"; case 10: return "دی"; case 11: return "بهمن"; case 12: return "اسفند"; default: return ""; } } public static string GetDayName(this DayOfWeek day) { switch (day) { case DayOfWeek.Friday: return "جمعه"; case DayOfWeek.Monday: return "دوشنبه"; case DayOfWeek.Saturday: return "شنبه"; case DayOfWeek.Sunday: return "یک شنبه"; case DayOfWeek.Thursday: return "پنج شنبه"; case DayOfWeek.Tuesday: return "سه شنبه"; case DayOfWeek.Wednesday: return "چهار شنبه"; default: return ""; } } } public enum PersianDays { [Display(Name = "شنبه")] Saturday = (int)(DayOfWeek.Saturday), [Display(Name = "یکشنبه")] Sunday = (int)(DayOfWeek.Sunday), [Display(Name = "دوشنبه")] Monday = (int)(DayOfWeek.Monday), [Display(Name = "سه شنبه")] Tuesday = (int)(DayOfWeek.Tuesday), [Display(Name = "چهار شنبه")] Wednesday = (int)(DayOfWeek.Wednesday), [Display(Name = "پنج شنبه")] Thursday = (int)(DayOfWeek.Thursday), [Display(Name = "چمعه")] Friday = (int)(DayOfWeek.Friday), } }