PDA

View Full Version : مشکل بسیار عجیب با کلاس hijricalendar برای تقویم قمری



daszarrin
چهارشنبه 20 اردیبهشت 1391, 14:50 عصر
امروز به یک مشکل جالب برخورد کردم
تابع HijriCalendar تاریخ ها رو به صورت اشتباه به قمری تبدیل می‌کنه!
در هنگام برنامه نویسی ضمن تبدیل تاریخ میلادی به قمری، متوجه اختلاف یک روزه بین خروجی تابع تقویم قمری (که به صورت رسمی توسط مایکروسافت ارائه شده است) با تقویم رسمی کشور شدم.
و مشکل جالب تر اینکه تعداد روزهای بعضی ماه ها رو اشتباه نشون میده!

بر آن شدم که ببینم مشکل از کجاست، اما نه تنها راهی پیدا نکردم، بلکه گیج تر هم شدم، چون هر تقویمی یک چیزی نمایش می‌دهد!
گویا تقویم هجری قمری از هیچ استانداردی پیروی نمی‌کند!
متاسفانه سایتهای www.time.ir (http://www.time.ir) و www.taghvim.com (http://www.taghvim.com) هم اطلاعات غلطی ارائه می‌دهند. به عنوان مثال در هر دو سایت "2 خرداد 1391" معادل "1 رجب 1433" آمده است در صورتیکه معادل "30 جمادی الثانی 1433" می‌باشد. حتی سایت time.ir تاریخ قمری امروز را نیز به اشتباه 18 جمادی الثانی نمایش می‌دهد در حالیکه امروز 17 جمادی الثانی است!

برای دستیابی به تقویم قمری صحیح این (file:///D:/Documents%20and%20Settings/Administrator/Desktop/%D8%A7%D9%84%D8%AA%D9%82%D9%88%D9%8A%D9%85%20%D8%A 7%D9%84%D9%87%D8%AC%D8%B1%D9%8A%201433.htm) را پیدا کردم.
من از قطعه کد زیر در برنامه برای به دست آوردم روز و ماه استفاده کرده ام




DateTime dt = DateTime.Now;
HijriCalendar hijri = new HijriCalendar();
int hijri_day = hijri.GetDayOfMonth(dt);
int hijri_mah1 = hijri1.GetMonth(dt);


به نظر میاد یک bug در توابع مایکروسافت وجود داره
اضافه کنم که به راهنمایی بعضی از دوستان از HijriAdjustment هم استفاده کردم، اما تنها کمکی که می کنه جابجا کردن روزهاست، ولی چون تعداد روزهای یک ماه همچنان اشتباه محاسبه میشه، ممکنه جابجایی روزها در یک ماه درست بشه، اما در ماه بعد همچنان اشتباه خواهد ماند!!!

من این مشکل رو تو سایتم (http://www.daszarrin.ir)هم نوشتم، اگر کسی لطف کرد جوابی پیدا کرد، اونجا هم بنویسه ممنون میشم