public static int MonthLastDay(int Y, int M) { if (M < 7) { return(31); } return(M < 12 || PersianDateTimeConverter.IsLeapYear((long)Y) ? 30 : 29); }
public static long MonthFirstDay(int Y, int M) { int D = 1; long DOW; PersianDateTimeConverter.PersianDateDetail(PersianDateTimeConverter.FromPersianDate(Y, M, D), out Y, out M, out D, out DOW); return(DOW); }
public static string PersianDateToRString(DateTime date) { int Y; int M; int D; long DOW; PersianDateTimeConverter.PersianDateDetail(date, out Y, out M, out D, out DOW); return(D.ToString() + "/" + M.ToString() + "/" + Y.ToString()); }
public static DateTime GetMonthFirstDay(DateTime dt) { int Y; int M; int D; long DOW; PersianDateTimeConverter.PersianDateDetail(dt, out Y, out M, out D, out DOW); return(PersianDateTimeConverter.FromPersianDate(Y, M, 1, dt.Hour, dt.Minute, dt.Second)); }
public static long MonthLastDay(DateTime Dt) { int Y; int M; int D; long DOW; PersianDateTimeConverter.PersianDateDetail(Dt, out Y, out M, out D, out DOW); return((long)PersianDateTimeConverter.MonthLastDay(Y, M)); }
public static long WeekNo(DateTime Dt) { int Y; int M; int D; long DOW; PersianDateTimeConverter.PersianDateDetail(Dt, out Y, out M, out D, out DOW); return(PersianDateTimeConverter.WeekNo(Y, M, D)); }
public static DateTime AddMonths(DateTime dt, int MonthNo) { int Y; int M1; int D; long DOW; PersianDateTimeConverter.PersianDateDetail(dt, out Y, out M1, out D, out DOW); int M2 = M1 + MonthNo; return(PersianDateTimeConverter.FromPersianDate(Y, M2, D, dt.Hour, dt.Minute, dt.Second)); }
public PersianDateTime AddMonths(int Months) { int M = this.M + Months; int y = this.Y; while (M > 12) { M -= 12; ++y; } return((PersianDateTime)PersianDateTimeConverter.FromPersianDate(y, M, this.D)); }
public static DateTime FromPersianDate( int Y, int M, int D, int hour, int minute, int second) { DateTime dateTime = PersianDateTimeConverter.FromPersianDate(Y, M, D); dateTime = dateTime.AddHours((double)hour); dateTime = dateTime.AddMinutes((double)minute); dateTime = dateTime.AddSeconds((double)second); return(dateTime); }
public static bool IsValidPersianDate(string datestr) { int Y; int M; int D; int hour; int minute; int second; if (!PersianDateTimeConverter.PersianDateParse(datestr, out Y, out M, out D, out hour, out minute, out second)) { return(false); } return(PersianDateTimeConverter.IsValidPersianDate(Y, M, D)); }
public static bool TryParse(string dateStr, out DateTime date) { date = DateTime.Now; int Y; int M; int D; int hour; int minute; int second; if (!PersianDateTimeConverter.PersianDateParse(dateStr, out Y, out M, out D, out hour, out minute, out second)) { return(false); } date = PersianDateTimeConverter.FromPersianDate(Y, M, D, hour, minute, second); return(true); }
public static void ValidatePersianDate(ref int Y, ref int M, ref int D) { if (Y < 0) { Y = 1200; } if (Y < 100) { Y += 1300; } while (M < 1) { M += 12; --Y; } while (M > 12) { M -= 12; ++Y; } if (D < 1) { D = 1; } else if (M < 7 && D > 31) { D = 31; } else if (M > 6 && M < 12 && D > 30) { D = 30; } else if (!PersianDateTimeConverter.IsLeapYear((long)Y) && M == 12 && D > 29) { D = 29; } else { if (!PersianDateTimeConverter.IsLeapYear((long)Y) || M != 12 || D <= 30) { return; } D = 30; } }
public static DateTime FromPersianDate(int Y, int M, int D) { PersianDateTimeConverter.ValidatePersianDate(ref Y, ref M, ref D); long num1 = (long)((Y - 1277) / 33); long num2 = (long)((Y - 1277) % 33) / 4L; if (num2 == 8L) { --num2; } long num3 = num2 + num1 * 8L + (long)((Y - 1279) * 365) + 80L + (long)((M - 1) * 31) + (long)D; if (M > 7) { num3 -= (long)(M - 7); } return(DateTime.FromOADate((double)num3)); }
public static string PersianDateToString(DateTime date) { int Y; int M; int D; long DOW; PersianDateTimeConverter.PersianDateDetail(date, out Y, out M, out D, out DOW); string str1 = Y.ToString() + "/"; if (M < 10) { str1 += "0"; } string str2 = str1 + M.ToString() + "/"; if (D < 10) { str2 += "0"; } return(str2 + D.ToString()); }
public static long WeekNo(int Y, int M, int D) { long num1 = PersianDateTimeConverter.MonthFirstDay(Y, 1); long num2 = (long)((M - 1) * 31 + D); if (M > 7) { num2 -= (long)(M - 7); } long num3 = num2 - (8L - num1); long num4 = (num3 - 1L) / 7L + 1L; if (num1 < 5L) { ++num4; } if (M == 12 && num3 % 7L > 0L && (long)(PersianDateTimeConverter.MonthLastDay(Y, M) - D) + num3 % 7L < 4L) { num4 = 1L; } return(num4); }
public static DateTime FromPersianDate(string Datestr) { int Y; int M; int D; int hour; int minute; int second; if (!PersianDateTimeConverter.PersianDateParse(Datestr, out Y, out M, out D, out hour, out minute, out second)) { throw new InvalidPersianDateException(); } if (!PersianDateTimeConverter.IsValidPersianDate(Y, M, D)) { throw new InvalidPersianDateException(); } long num1 = (long)((Y - 1277) / 33); long num2 = (long)((Y - 1277) % 33) / 4L; if (num2 == 8L) { --num2; } long num3 = num2 + num1 * 8L + (long)((Y - 1279) * 365) + 80L + (long)((M - 1) * 31) + (long)D; if (M > 7) { num3 -= (long)(M - 7); } DateTime dateTime = DateTime.FromOADate((double)num3); dateTime = dateTime.AddHours((double)hour); dateTime = dateTime.AddMinutes((double)minute); dateTime = dateTime.AddSeconds((double)second); return(dateTime); }
public PersianDateTime(int year, int month, int day) { this.Date = PersianDateTimeConverter.FromPersianDate(year, month, day); }
public PersianDateTime(string date) { this.Date = PersianDateTimeConverter.FromPersianDate(date); }
private void SetParams() { PersianDateTimeConverter.PersianDateDetail(this.date, out this.Y, out this.M, out this.D, out this.DOW); }
public static bool IsLeapYear(int year) { return(PersianDateTimeConverter.IsLeapYear((long)year)); }
public PersianDateTime AddYears(int value) { return((PersianDateTime)PersianDateTimeConverter.FromPersianDate(this.Y + value, this.M, this.D)); }
public static bool IsValidPersianDate(int Y, int M, int D) { return(M >= 1 && M <= 12 && D >= 1 && (M >= 7 || D <= 31) && ((M <= 6 || D <= 30) && (PersianDateTimeConverter.IsLeapYear((long)Y) || M != 12 || D <= 29))); }