Skip to content

Commit

Permalink
Handle hijri holidays of 1401 and 1402
Browse files Browse the repository at this point in the history
  • Loading branch information
hamed committed May 6, 2022
1 parent 1cc69b1 commit 6a1d0f2
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 3 deletions.
17 changes: 16 additions & 1 deletion PersianTools.Core/PersianTools.Core/HijriCalendarManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,13 +93,28 @@ internal static HijriCalendar SetHijriCalendar(DateTime datetime)
hijri.HijriAdjustment = -1;
else if ((month == 9 && day == 30) || month == 10)
{
hijri.HijriAdjustment = 0;
hijri.HijriAdjustment = -1;
day = hijri.GetDayOfMonth(datetime);
month = hijri.GetMonth(datetime);

}
break;

case 1444: /* 1401 */
hijri.HijriAdjustment = -1;

if (month == 3 && day == 1)
{
hijri.HijriAdjustment = -2;
day = hijri.GetDayOfMonth(datetime);
month = hijri.GetMonth(datetime);
}

else if (month == 3 || month == 9)
hijri.HijriAdjustment = -2;

break;

default:
hijri.HijriAdjustment = -1;
break;
Expand Down
19 changes: 17 additions & 2 deletions PersianTools.Core/PersianTools.Test/DateTimeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -312,13 +312,28 @@ public void Hijri_HolyDays_1399To1400(int year, int month, int day)
[InlineData(1400, 12, 10)]
[InlineData(1400, 12, 27)]
[InlineData(1401, 2, 3)]
[InlineData(1401, 2, 12)]
[InlineData(1401, 2, 13)]
[InlineData(1401, 3, 5)]
[InlineData(1401, 2, 14)]
[InlineData(1401, 3, 6)]
[InlineData(1401, 4, 19)]
[InlineData(1401, 4, 27)]
[InlineData(1401, 5, 16)]
[InlineData(1401, 5, 17)]
[InlineData(1401, 6, 26)]
[InlineData(1401, 7, 3)]
[InlineData(1401, 7, 5)]
[InlineData(1401, 7, 13)]
[InlineData(1401, 7, 22)]
[InlineData(1401, 10, 6)]
[InlineData(1401, 11, 15)]
[InlineData(1401, 11, 29)]
[InlineData(1401, 12, 17)]
[InlineData(1402, 1, 24)]
[InlineData(1402, 2, 2)]
[InlineData(1402, 2, 3)]
[InlineData(1402, 2, 26)]
[InlineData(1402, 4, 8)]
[InlineData(1402, 4, 16)]
public void Hijri_HolyDays_1400To1401(int year, int month, int day)
{
var theDate = new PersianDateTime(year, month, day);
Expand Down
3 changes: 3 additions & 0 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
<h1 style="color: #5e9ca0;"><span style="color: #000000;">ابزار Persian Tools</span></h1>
<h3>ابزاری برای برنامه نویسان
دات نت که که فیچرهای زیادی را برای شما فراهم می کند که در ادامه آنها را شرح خواهیم داد. </h3>
<h4> نکته مهم: با توجه به اینکه برخی تعطیلات بر اساس ماه های قمری می باشند و ممکن است دچار تغییرات شوند که این تغییرات قبل از وقوع حتی در time.ir هم قابل پیش بینی نبوده اند مانند عید فطر سال 1401
بنابراین توجه داشته باشید که درصد خطایی در این حد در کتابخانه وجود دارد </h4>

</div>
<hr>

Expand Down

3 comments on commit 6a1d0f2

@Pouya-zarghooni
Copy link

@Pouya-zarghooni Pouya-zarghooni commented on 6a1d0f2 May 8, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

با سلام و عرض خسته نباشید
ببخشید چگونه میتوانم تعداد روزهای کاری را در یک بازه تاریخی بدست آورم؟

var d1 = new PersianDateTime(1397, 8, 1);
var d2 = new PersianDateTime(1397, 8, 30);
PersianDateTime.GetWorkingDays(d1,d2);

کد بالا را وقتی در برنامه ام که windows form application است استفاده میکنم متد ()PersianDateTime.GetWorkingDays را تشخیص نمی دهد.

@naeemaei
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

با سلام و عرض خسته نباشید ببخشید چگونه میتوانم تعداد روزهای کاری را در یک بازه تاریخی بدست آورم؟

var d1 = new PersianDateTime(1397, 8, 1); var d2 = new PersianDateTime(1397, 8, 30); PersianDateTime.GetWorkingDays(d1,d2);

کد بالا را وقتی در برنامه ام که windows form application است استفاده میکنم متد ()PersianDateTime.GetWorkingDays را تشخیص نمی دهد.

سلام پویا جان
متاسفانه بعد از برخی تغییراتی که توی کد داشتیم مستندات پروژه بروزرسانی نشد.
الان این بروزرسانی انجام شده
شما هم برای انجام موردی که میخواین از این قطعه کد استفاده کنید:

var d1 = new PersianDateTime(1397, 8, 1);

var d2 = new PersianDateTime(1397, 8, 30);

PersianDateExtensions.GetWorkingDays(d1,d2); // بدون پنجشنبه ها

PersianDateExtensions.GetWorkingDays(d1,d2, true); // با احتساب روزهای پنجشنبه غیر تعطیل

@Pouya-zarghooni
Copy link

@Pouya-zarghooni Pouya-zarghooni commented on 6a1d0f2 May 9, 2022 via email

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.