نوشته شده توسط
ashkan209
دوستان همونطور که میدونید از دات نت 2 کلاس PersianCalendar به این فریمورک اضافه شد، که بهترین امکان برای کار با تاریخ فارسی و تبدیل به میلادی و ... هست
اما سوال من اینه که با استفاده از این این کلاس چطور میتونیم سال کبیسه را تشخیص بدیم ؟
نمیخوام از هیچگونه کامپوننت یا dll جداگونه استفاده کنم
سلام دوست عزیز:
این کلاس یک متد داره بنام IsLeapYear که یک سال رو میگیره و نتیجه رو بصورت True|False برگشت میده. در پیاده سازی این تابع از یک آرایه و یک تقسیم کوچک برای تشخیص سال کبیسه استفاده شده:
میدونیم که در هر 33 سال 8 بار سال کبیسه اتفاق میفته با این حساب یک آرایه با 33 عضو خواهیم داشت که سه یکی درمیون مقدار 0 و 1 میگیرن. یعنی به شکل زیر:
LeapYears33 = new int[] {
0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0,
0
};
حالا با یک تقسیم ساده و بدست آوردن باقیمانده میتونیم سال کبیسه رو معین کنیم:
(LeapYears33[year % 33] == 1);
کل بدنه تابع هم میشه این:
function IsLeapYear(int year)
{
int[] LeapYears33 = new int[] { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 };
return (LeapYears33[year % 33] == 1);
}
اینم توضیحات بیشتر
موفق باشید