Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

عدم نمایش درست سال کبیسه #143

Open
mohammadasaddev opened this issue May 4, 2024 · 2 comments
Open

عدم نمایش درست سال کبیسه #143

mohammadasaddev opened this issue May 4, 2024 · 2 comments

Comments

@mohammadasaddev
Copy link

با سلام

اسفند 1403 در تقویم 30 روز است اما در دیت پیکر 29 روز در حال نمایش است

@hamidroozkhosh
Copy link

hamidroozkhosh commented May 6, 2024

سلام
این مشل به دلیل خطا در نوع الگوریتم محاسبه سال کبیسه می باشد و با تغییر الگوریتم از algorithmic به astronomical مشکل بر طرف می شود.

calendar: {
  persian: {
    leapYearMode: 'algorithmic'
  }
},

calendar: {
  persian: {
    leapYearMode: 'astronomical'
  }
}

@devdevi1331
Copy link

سلام
آیا روی روشهای دیگر و با خروجی قابل اطمینان تری برای محاسبه سالهای کبیسه بررسی صورت گرفته است؟ در حال حاضر روش پیشفرض در کتابخانه های persianDate و persianDatepicker برای محاسبه سال کبیسه بر روی algorithmic تنظیم شده است. آیا دلیلی برای این انتخاب وجود دارد؟ با مشاهده خروجی های سالهای مختلف مشاهده می شود که در هر دو حالت algorithmic و astronomical سالهایی وجود دارند که به اشتباه کبیسه تشخیص داده شده/نشده اند.
یکی از سایر روشها برای تشخیص سال کبیسه بین سالهای 1343 تا 1472، روش محاسبه باقیمانده عدد سال تقسیم بر عدد 33 می باشد. و اگر باقیمانده یکی از اعداد 1, 5, 9, 13, 17, 22, 26, 30 باشد آن سال به عنوان کبیسه محاسبه می شود. (برای محاسبه سالهای 1244 تا 1342 به جای 22 در لیست باقیمانده ها، باید عدد 21 را چک کنیم.

for (let i = 1343; i <= 1498; i++) {
    const leapInAlgoritmic = new persianDate([i]).toLeapYearMode('algorithmic').isLeapYear();
    const leapInAstronomical = new persianDate([i]).toLeapYearMode('astronomical').isLeapYear();
    const leapInMathematical = [1, 5, 9, 13, 17, 22, 26, 30].includes(i % 33);
    if (leapInAlgoritmic || leapInAstronomical || leapInMathematical) {
        if (leapInAlgoritmic && leapInAstronomical && leapInMathematical) {
            console.log(i+ ', All true');
        } else {
            console.log(i+ ', Algoritmic: ' + leapInAlgoritmic + ', Astronomical: ' + leapInAstronomical + ', Mathematical: ' + leapInMathematical)
        }
    }
}

با توجه به خروجی کد بالا و مقایسه آن با سالهای کبیسه مرجع (سالهای عادی و کبیسه محاسبه شده از سال 1206 تا سال 1498 توسط مرکز تقویم مؤسسه ژئوفیزیک دانشگاه تهران)که در تمامی موارد بین سالهای 1343 تا 1498 سال کبیسه با روش mathematical به درستی تشخیص داده شده است، پیشنهاد می کنم یک حالت mathematical نیز به کتابخانه اضافه شود و همچنین از آنجایی که در عصر حاضر، اکثر کاربردهای این دو کتابخانه بین این سالهاست، پیشفرض persianDate و persianDatepicker بر روی آن تنظیم شود.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants