سلام و روز خوش
در مورد تابع PersianToEn چند نکته دیده میشه:
1- با توجه به اون 2820 و 682 در فرمولها گویا بر اساس الگوریتم آقایان بهروز/بیرشک هست که بر پایه چرخه های 2820 ساله بنا شده،
این روش البته اشکال داره که همین عدم تشخیص کبیسه بودن سال 1403 یکیش هست.
2- چون نتیجه محاسبه (روزهای گذشته از رفرنس تاریخ) به داده datetime کانورت میشه،
پس یک محدودیت در کف تاریخ قابل تبدیل داریم که اول ژانویه 1900 هست
که همزمان میشه با 11 دی 1278 خورشیدی.
در کارهای تجاری و پرسنلی و تولیدی و ... که با تاریخ های معاصر سروکار داریم این هیچ مشکلی نداره
بخصوص که این الگوریتم از همین 1278 تا 1404 دقیق و درسته.
ولی اگر با وقایع تاریخی و سیاسی سروکار داشته باشیم باید فانکشن اصلاح بشه.
3- الان یک IF هست که کل تاریخ های بعد از 1403 رو در بر میگیره که این درست نیست،
چون این الگوریتم در همه تاریخهای بعد از 1403 نیست که اشکال داره :
احتمالا فقط اونهایی رو اشتباه محاسبه میکنه که سیکلشون رو گم میکنه (33 سال و ...)
پس اگه IF رو به 1404= درست کنین اونوقت باید تا سیکل گم شده بعدی رو درست محاسبه کنه (اگه همین 33 سال باشه میشه دست کم تا سال 1437)
وگرنه 1404 درست میشه ولی بعد از اون همه رو اشتباه برمیگردونه.
حالا این باید تست بشه برای قطعیت - ولی تا پایان 1436 هم اگه با همین ویرایش IF درست بشه برای کارهای عملی کفایت میکنه
و هیچ اپلیکیشنی در حال حاضر قرار نیست تا اون موقع بمونه.






پاسخ با نقل قول