using System; using System.Globalization; namespace Infrastructure { public static class DateTimeExtension { public static long ConvertToTimestamp(this DateTime value) { long epoch = (value.Ticks - 621355968000000000) / 10000000; return epoch; } public static DateTime? ConvertShamsiToMiladi(string date) { try { date = date.Replace("-", "/").Replace(".", "/"); var persianYear = GetPersianYear(DateTime.Now); var parts = date.Split('/'); var year = Convert.ToInt16(parts[0]); var month = Convert.ToInt16(parts[1]); var day = Convert.ToInt16(parts[2]); if (day > 1300) { var temp = year; year = day; day = temp; } if (persianYear < 1410 && year < 10) year += 1400; else if (persianYear < 1410 && year > 10 && year < 100) year += 1300; else if (year + 1400 <= persianYear) year += 1400; else if (year < 1300) year += 1300; PersianCalendar persianCalendar = new PersianCalendar(); return persianCalendar.ToDateTime(year, month, day, 0, 0, 0, 0); } catch { return null; } } public static string ComputedDateTime(this DateTime InsertDateTime) { PersianCalendar persianCalendar = new PersianCalendar(); int year = persianCalendar.GetYear(InsertDateTime); int month = persianCalendar.GetMonth(InsertDateTime); int dayOfMonth = persianCalendar.GetDayOfMonth(InsertDateTime); int hour = persianCalendar.GetHour(InsertDateTime); int minute = persianCalendar.GetMinute(InsertDateTime); int second = persianCalendar.GetSecond(InsertDateTime); object[] objArray = new object[] { year, null, null, null, null, null }; objArray[1] = (month < 10 ? string.Format("0{0}", month) : month.ToString()); objArray[2] = (dayOfMonth < 10 ? string.Format("0{0}", dayOfMonth) : dayOfMonth.ToString()); objArray[3] = (hour < 10 ? string.Format("0{0}", hour) : hour.ToString()); objArray[4] = (minute < 10 ? string.Format("0{0}", minute) : minute.ToString()); objArray[5] = (second < 10 ? string.Format("0{0}", second) : second.ToString()); return string.Format("{0}-{1}-{2}-{3}{4}{5}", objArray); } public static long ConvertToTimeStamp(DateTime value) { DateTime dateTime = TimeZoneInfo.ConvertTime(value, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")); TimeZone.CurrentTimeZone.GetDaylightChanges(dateTime.Year); dateTime = dateTime.AddHours(8); DateTime dateTime1 = new DateTime(1970, 1, 1, 0, 0, 0, 0); DateTime localTime = dateTime1.ToLocalTime(); return (long)Convert.ToDouble((dateTime - localTime).TotalSeconds); } public static string GetDayName(this DayOfWeek day) { switch (day) { case DayOfWeek.Sunday: { return "یک شنبه"; } case DayOfWeek.Monday: { return "دوشنبه"; } case DayOfWeek.Tuesday: { return "سه شنبه"; } case DayOfWeek.Wednesday: { return "چهار شنبه"; } case DayOfWeek.Thursday: { return "پنج شنبه"; } case DayOfWeek.Friday: { return "جمعه"; } case DayOfWeek.Saturday: { return "شنبه"; } } return ""; } public 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 "اسفند"; } } return ""; } public static string GetPersianDate(this DateTime value, bool showDayName, bool showMonthName, bool showTime, bool fromTripCreationTime = false) { PersianCalendar persianCalendar = new PersianCalendar(); int year = persianCalendar.GetYear(value); int month = persianCalendar.GetMonth(value); int dayOfMonth = persianCalendar.GetDayOfMonth(value); string str = string.Format((showMonthName ? "{2} {1} {0}" : "{0}/{1}/{2}"), year, (showMonthName ? month.GetMonthName() : month.ToString("")), dayOfMonth); if (fromTripCreationTime) ; if (showDayName) { str = string.Format("{0} {1}", persianCalendar.GetDayOfWeek(value).GetDayName(), str); } if (showTime) { str = string.Format("{0} ساعت {1}:{2}", str, value.Hour, value.Minute); } return str; } public static int GetPersianYear(this DateTime value) { PersianCalendar persianCalendar = new PersianCalendar(); int year = persianCalendar.GetYear(value); return year; } public static string GetPersianDate(this DateTime value) { if (value == DateTime.MinValue) return ""; try { return value.GetPersianDate(false, false, false); } catch (Exception) { return ""; } } 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 int GetPersianMonth(this DateTime value) { PersianCalendar persianCalendar = new PersianCalendar(); int month = persianCalendar.GetMonth(value); return month; } public static int GetPersianMonthLenght(this DateTime value) { PersianCalendar persianCalendar = new PersianCalendar(); int month = persianCalendar.GetMonth(value); if (month <= 6) return 31; if (month == 12) return 29; return 30; } public static int GetPersianDay(this DateTime value) { PersianCalendar persianCalendar = new PersianCalendar(); int d = persianCalendar.GetDayOfMonth(value); return d; } } }