تحديات برمجة نظام التقويم المزدوج (هجري/ميلادي) في تطبيق عقاري
عند بناء منصة أملاكي (amlakire.com)، كان دعم التقويم الهجري من أكبر التحديات التقنية. هنا أشارك الدروس المستفادة.
التحدي الأول: الحساب الدقيق
الشهر الهجري يتراوح بين 29 و 30 يوماً، والسنة الهجرية 354 أو 355 يوماً. لا يمكنك ببساطة طرح 11 يوماً من التاريخ الميلادي.
الحل: Intl.DateTimeFormat
التحدي الثاني: حساب دورات الدفع الهجرية
إذا كان العقد يبدأ في 1 محرم 1447 ودورة الدفع ربع سنوية، يجب حساب 4 دفعات بفارق 3 أشهر هجرية بينها — وليس 90 يوماً ميلادياً.
التحدي الثالث: التخزين في قاعدة البيانات
نخزن التواريخ دائما كـ TIMESTAMP ميلادي في PostgreSQL. التحويل للهجري يحدث في طبقة العرض فقط.
التحدي الرابع: تقويم أم القرى
السعودية تستخدم تقويم أم القرى رسميا. JavaScript الحديث يدعمه عبر: ar-SA-u-ca-islamic (وليس islamic-civil أو islamic-tbla)
النتيجة
نظام يعرض التاريخين في كل مكان — العقود، الأقساط، سندات القبض، والتقارير — بدقة تامة.
المنصة: amlakire.com