/// <summary> /// دریافت جزء زمانی ویژهی این وهله /// </summary> public static DateTime GetDateTimeOffsetPart( this DateTimeOffset dateTimeOffset, DateTimeOffsetPart dataDateTimeOffsetPart) { switch (dataDateTimeOffsetPart) { case DateTimeOffsetPart.DateTime: return(dateTimeOffset.DateTime); case DateTimeOffsetPart.LocalDateTime: return(dateTimeOffset.LocalDateTime); case DateTimeOffsetPart.UtcDateTime: return(dateTimeOffset.UtcDateTime); case DateTimeOffsetPart.IranLocalDateTime: return(dateTimeOffset.ToIranTimeZoneDateTimeOffset().DateTime); default: throw new ArgumentOutOfRangeException(nameof(dataDateTimeOffsetPart), dataDateTimeOffsetPart, null); } }
/// <summary> /// ماه شمسی معادل را محاسبه کرده و سپس /// تاریخ روزهای ابتدا و انتهای آن ماه شمسی را بازگشت میدهد /// </summary> public static PersianMonth GetPersianMonthStartAndEndDates(this DateTimeOffset dateTimeOffset, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { var dateTime = dateTimeOffset.GetDateTimeOffsetPart(dateTimeOffsetPart); var persianYear = dateTime.GetPersianYear(); var persianMonth = dateTime.GetPersianMonth(); return(persianYear.GetPersianMonthStartAndEndDates(persianMonth)); }
/// <summary> /// سال شمسی معادل را محاسبه کرده و سپس /// تاریخ روزهای ابتدا و انتهای آن سال شمسی را بازگشت میدهد /// </summary> public static PersianYear GetPersianYearStartAndEndDates(this DateTimeOffset dateTimeOffset, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { var persianYear = dateTimeOffset.GetDateTimeOffsetPart(dateTimeOffsetPart).GetPersianYear(); return(persianYear.GetPersianYearStartAndEndDates()); }
/// <summary> /// گرفتن نام فارسی روزهای هفته /// </summary> /// <param name="dt">تاریخ و زمان</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> public static string GetPersianWeekDayName(this DateTimeOffset dt, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(GetPersianWeekDayName(dt.GetDateTimeOffsetPart(dateTimeOffsetPart))); }
/// <summary> /// گرفتن نام فارسی روزهای هفته /// </summary> /// <param name="dt">تاریخ و زمان</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> public static string GetPersianWeekDayName(this DateTimeOffset?dt, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(dt == null ? string.Empty : GetPersianWeekDayName(dt.Value.GetDateTimeOffsetPart(dateTimeOffsetPart))); }
/// <summary> /// تبدیل تاریخ میلادی به شمسی و دریافت اجزای سال، ماه و روز نتیجهی حاصل /// </summary> /// <param name="gregorianDate">تاریخ و زمان</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> public static PersianDay ToPersianYearMonthDay(this DateTimeOffset?gregorianDate, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(gregorianDate == null ? throw new ArgumentNullException(nameof(gregorianDate)) : ToPersianYearMonthDay(gregorianDate.Value.GetDateTimeOffsetPart(dateTimeOffsetPart))); }
/// <summary> /// نمایش دوستانهی یک تاریخ و ساعت انگلیسی به شمسی /// مانند ۱۰ روز قبل، سه شنبه ۲۱ دی ۱۳۹۵، ساعت ۱۰:۲۰ /// </summary> /// <param name="dt">تاریخ ورودی</param> /// <param name="comparisonBase">مبنای مقایسه مانند هم اکنون</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> /// <param name="appendHhMm">آیا ساعت نیز به نتیجهاضافه شود؟</param> /// <param name="includePersianDate">آيا تاريخ نيز به نتيجه اضافه شود؟</param> /// <returns>نمایش دوستانه</returns> public static string ToFriendlyPersianDateTextify( this DateTimeOffset dt, DateTime comparisonBase, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime, bool appendHhMm = true, bool includePersianDate = true) { return($"{UnicodeConstants.RleChar}{toFriendlyPersianDate(dt.GetDateTimeOffsetPart(dateTimeOffsetPart), comparisonBase, appendHhMm, false, includePersianDate).ToPersianNumbers()}"); }
/// <summary> /// تبدیل تاریخ میلادی به شمسی /// با قالبی مانند 1395/10/21 10:20 /// </summary> /// <param name="dt">تاریخ و زمان</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> /// <returns>تاریخ شمسی</returns> public static string ToShortPersianDateTimeString(this DateTimeOffset?dt, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(dt == null ? string.Empty : ToShortPersianDateTimeString(dt.Value.GetDateTimeOffsetPart(dateTimeOffsetPart))); }
/// <summary> /// لیست مناسبتهای تعطیلات رسمی ایران در این روز خاص در صورت وجود /// از سال 1395 تا پایان سال 1398 /// </summary> /// <param name="date">تاریخ</param> /// <param name="dateTimeOffsetPart"></param> public static IEnumerable <string>?GetHolidays(this DateTimeOffset date, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { var fromDt = date.GetDateTimeOffsetPart(dateTimeOffsetPart); return(GetHolidays(fromDt)); }
/// <summary> /// محاسبه سن /// </summary> /// <param name="birthday">تاریخ تولد</param> /// <param name="comparisonBase">مبنای محاسبه مانند هم اکنون</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> /// <returns>سن</returns> public static int GetAge(this DateTimeOffset birthday, DateTime comparisonBase, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(GetAge(birthday.GetDateTimeOffsetPart(dateTimeOffsetPart), comparisonBase)); }
/// <summary> /// نمایش فارسی روز دریافتی /// مانند سه شنبه ۲۱ دی ۱۳۹۵ /// </summary> /// <param name="dt">تاریخ و زمان</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> public static string ToPersianDateTextify(this DateTimeOffset dt, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(ToPersianDateTextify(dt.GetDateTimeOffsetPart(dateTimeOffsetPart))); }
/// <summary> /// نمایش دوستانهی یک تاریخ و ساعت انگلیسی به شمسی /// مانند ۱۰ روز قبل، سه شنبه ۲۱ دی ۱۳۹۵، ساعت ۱۰:۲۰ /// </summary> /// <param name="dt">تاریخ ورودی</param> /// <param name="comparisonBase">مبنای مقایسه مانند هم اکنون</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> /// <returns>نمایش دوستانه</returns> public static string ToFriendlyPersianDateTextify(this DateTimeOffset?dt, DateTime comparisonBase, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(dt == null ? string.Empty : ToFriendlyPersianDateTextify(dt.Value.GetDateTimeOffsetPart(dateTimeOffsetPart), comparisonBase)); }
/// <summary> /// نمایش دوستانهی یک تاریخ و ساعت انگلیسی به شمسی /// مانند ۱۰ روز قبل، سه شنبه ۲۱ دی ۱۳۹۵، ساعت ۱۰:۲۰ /// </summary> /// <param name="dt">تاریخ ورودی</param> /// <param name="comparisonBase">مبنای مقایسه مانند هم اکنون</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> /// <returns>نمایش دوستانه</returns> public static string ToFriendlyPersianDateTextify(this DateTimeOffset dt, DateTime comparisonBase, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return($"{UnicodeConstants.RleChar}{toFriendlyPersianDate(dt.GetDateTimeOffsetPart(dateTimeOffsetPart), comparisonBase).ToPersianNumbers()}"); }
/// <summary> /// هفته شمسی معادل را محاسبه کرده و سپس /// تاریخ روزهای ابتدا و انتهای آن هفته شمسی را بازگشت میدهد /// </summary> public static PersianWeek GetPersianWeekStartAndEndDates(this DateTimeOffset dateTimeOffset, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { var dateTime = dateTimeOffset.GetDateTimeOffsetPart(dateTimeOffsetPart); return(GetPersianWeekStartAndEndDates(dateTime)); }
/// <summary> /// تشخیص تعطیلات رسمی ایران /// از سال 1395 تا پایان سال 1398 /// </summary> /// <param name="date">تاریخ</param> /// <param name="dateTimeOffsetPart"></param> public static bool IsHoliday(this DateTimeOffset date, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { var fromDt = date.GetDateTimeOffsetPart(dateTimeOffsetPart); return(IsHoliday(fromDt)); }
/// <summary> /// تبدیل تاریخ میلادی به شمسی و دریافت اجزای سال، ماه و روز نتیجهی حاصل /// </summary> /// <param name="gregorianDate">تاریخ و زمان</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> public static Tuple <int, int, int> ToPersianYearMonthDay(this DateTimeOffset gregorianDate, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(ToPersianYearMonthDay(gregorianDate.GetDateTimeOffsetPart(dateTimeOffsetPart))); }
/// <summary> /// دریافت لیست روزهای کاری ایران در یک بازه زمانی /// از سال 1395 تا پایان سال 1398 /// </summary> /// <param name="from">از تاریخ</param> /// <param name="to">تا تاریخ</param> /// <param name="dateTimeOffsetPart"></param> /// <returns>روزهای کاری</returns> public static IEnumerable <DateTime> GetBusinessDays(this DateTimeOffset from, DateTimeOffset to, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { var fromDt = from.GetDateTimeOffsetPart(dateTimeOffsetPart); var toDt = to.GetDateTimeOffsetPart(dateTimeOffsetPart); return(GetBusinessDays(fromDt, toDt)); }
/// <summary> /// تبدیل تاریخ میلادی به شمسی /// با قالبی مانند 1395/10/21 10:20 /// </summary> /// <param name="dt">تاریخ و زمان</param> /// <param name="dateTimeOffsetPart">کدام جزء این وهله مورد استفاده قرار گیرد؟</param> /// <returns>تاریخ شمسی</returns> public static string ToShortPersianDateTimeString(this DateTimeOffset dt, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(ToShortPersianDateTimeString(dt.GetDateTimeOffsetPart(dateTimeOffsetPart))); }
/// <summary> /// تبدیل تاریخ میلادی به قمری /// </summary> /// <param name="dt"></param> /// <param name="dateTimeOffsetPart"></param> /// <returns></returns> public static IslamicDay ToIslamicDay(this DateTimeOffset dt, DateTimeOffsetPart dateTimeOffsetPart = DateTimeOffsetPart.IranLocalDateTime) { return(ToIslamicDay(dt.GetDateTimeOffsetPart(dateTimeOffsetPart))); }