public static string ToPersianShortDateString(this DateTime dateTime) { return PersianCalendarTools.GregorianToPersian(dateTime); }
public PersianYear CreateYearCalendar(int year) { // DateTime.Now.ToPersianLongDateString() var allDaysOfYear = new List <PersianDay>(); var allWeeksOfYear = new List <PersianWeek>(); var allMonthsOfYear = new List <PersianMonth>(); CreateAllDaysInYear(); CreateAllWeeksInYear(); AssignWeeksToMonths(); PersianYear currentYear; AssignMonthsToYear(); return(currentYear); void CreateAllDaysInYear() { var firstDayOfYear = new PersianDay { GregorianDay = PersianCalendarTools.PersianToGregorian(year + "/01/01"), }; var lastDayOfYear = new PersianDay(); lastDayOfYear.GregorianDay = PersianCalendarTools.PersianIsLeap(year) ? PersianCalendarTools.PersianToGregorian(year + "/12/30") : PersianCalendarTools.PersianToGregorian(year + "/12/29"); var tempDay = firstDayOfYear; do { allDaysOfYear.Add(tempDay); tempDay.GregorianDay = tempDay.GregorianDay.AddDays(1); tempDay = new PersianDay { GregorianDay = tempDay.GregorianDay, FullDate = PersianCalendarTools.GregorianToPersian(tempDay.GregorianDay), IsHoliday = (tempDay.GregorianDay.DayOfWeek == DayOfWeek.Friday), }; } while (tempDay.GregorianDay <= lastDayOfYear.GregorianDay); } void CreateAllWeeksInYear() { var monthWeekCounter = 0; for (var i = 0; i < allDaysOfYear.Count; i++) { if (i == 0 | allDaysOfYear[i].GregorianDay.DayOfWeek == DayOfWeek.Saturday) { monthWeekCounter = 1; var week = new PersianWeek { ListDays = new List <PersianDay>(), WeekNumber = monthWeekCounter }; allWeeksOfYear.Add(week); } var currentWeek = allWeeksOfYear[allWeeksOfYear.Count - 1]; allDaysOfYear[i].PersianWeek = currentWeek; allWeeksOfYear[allWeeksOfYear.Count - 1].ListDays.Add(allDaysOfYear[i]); monthWeekCounter++; } } void AssignWeeksToMonths() { allMonthsOfYear.Add(new PersianMonth { ListWeeks = new List <PersianWeek>(), MonthNumber = 1 }); var debug = 0; foreach (var week in allWeeksOfYear) { allMonthsOfYear[allMonthsOfYear.Count - 1].ListWeeks.Add(new PersianWeek { ListDays = new List <PersianDay>(), WeekNumber = allMonthsOfYear[allMonthsOfYear.Count - 1].ListWeeks.Count }); foreach (var day in week.ListDays) { var convertedToPersian = PersianCalendarTools.GregorianToPersian(day.GregorianDay).Split('/'); if (convertedToPersian[2] == "01") { if (convertedToPersian[1] != "01") { allMonthsOfYear.Add(new PersianMonth { ListWeeks = new List <PersianWeek>(), MonthNumber = allMonthsOfYear[allMonthsOfYear.Count - 1].MonthNumber + 1 }); } allMonthsOfYear[allMonthsOfYear.Count - 1].ListWeeks.Add(new PersianWeek { ListDays = new List <PersianDay>(), WeekNumber = allMonthsOfYear[allMonthsOfYear.Count - 1].ListWeeks.Count }); } allMonthsOfYear[allMonthsOfYear.Count - 1].ListWeeks[allMonthsOfYear[allMonthsOfYear.Count - 1].ListWeeks.Count - 1].ListDays.Add(day); debug++; } } allMonthsOfYear[0].ListWeeks.RemoveAt(0); allMonthsOfYear[0].ListWeeks.RemoveAt(allMonthsOfYear[0].ListWeeks.Count - 1); } void AssignMonthsToYear() { currentYear = new PersianYear { listMonths = allMonthsOfYear, YearNumber = year }; var emptyList = new List <int>(); for (var i = 0; i < currentYear.listMonths[0].ListWeeks.Count; i++) { var week = currentYear.listMonths[0].ListWeeks[i]; if (week.ListDays.Count == 0) { emptyList.Add(i); } } var counter = 0; foreach (var val in emptyList) { currentYear.listMonths[0].ListWeeks.RemoveAt(val - counter); counter++; } } }
public static string ToPersianLongDateString(this DateTime dateTime) { var converted = PersianCalendarTools.GregorianToPersian(dateTime).Split('/'); return PersianCalendarTools.PersianDayName(dateTime) + " " + converted[2] + ""+PersianCalendarTools.PersianMonthName(dateTime)+" " + converted[0]; }