كان العرب يؤرخون بالأشهر القمرية، فاعتمدوا التقويم القمري، إذ يبدأ الشهر القمري عند رؤية الهلال الجديد في الأفق الغربي بعد غروب الشمس، و يستمر الشهر القمري حتى رؤية الهلال الجديد التالي. و بقي العرب يؤرخون سنواتهم بأحداث هامة حدثت في تلك السنوات إلى أن جمع الخليفة عمر بن الخطاب رضي الله عنه الصحابة يوم الأربعاء 20 جمادى الآخرة سنة 17 للهجرة (الموافق 8/7/638 م) و تم الإجماع على اختيار وقت الهجرة ليكون بداية التقويم الإسلامي، و على الرغم من أن الهجرة حدثت يوم الاثنين 8 ربيع الأول سنة 1 للهجرة (الموافق 20/9/622 م) إلا أنه اتفق على جعل رأس السنة الهجرية هو بداية شهر محرم.
* أول أيام التقويم الهجري
يرى البعض أن بداية التقويم الهجري (1/1/1 هـ) كان يوم الجمعة 16/07/622 م، في حين يرى آخرون أن بداية التقويم الهجري كانت يوم الخميس 15/07/622 م. فإذا رجعنا إلى الحسابات الفلكية نجد أنه لم يكن بالإمكان رؤية الهلال يوم الأربعاء 14/07/622 م بالعين المجردة من أي منطقة في العالم، و عليه فنحن نرجح أن تكون بداية التقويم الهجري يوم الجمعة 16/07/622 م.
* اليوم اليولياني (Julian Day)
اليوم اليولياني هو بمثابة عداد أيام مستمر منذ العام 4712 قبل الميلاد، فاليوم اليولياني الموافق ليوم 01/01/2002م مثلا هو 2452276.0، أي أن عدد الأيام منذ العام 4712 قبل الميلاد و حتى 01/01/2002 هو 2452276.0 يوما. و يبدأ اليوم اليولياني عند الساعة 12 ظهرا حسب توقيت جرينتش.
* التحويل من اليوم اليولياني إلى تاريخ ميلادي و بالعكس
إن الطريقة المستخدمة في هذه الورقة لتحويل التاريخ الميلادي إلى هجري و بالعكس، تحول فعليا اليوم اليولياني إلى تاريخ هجري، و تحول التاريخ الهجري إلى يوم يولياني، و بالتالي إذا أردنا تحويل تاريخ ميلادي إلى تاريخ هجري، علينا أولا أن نحول التاريخ الميلادي إلى يوم يولياني و من ثم نحول هذا اليوم اليولياني إلى تاريخ هجري. أما إذا أردنا تحويل التاريخ هجري إلى تاريخ ميلادي، فعلينا أولا أن نحول التاريخ الهجري إلى يوم يولياني، و من ثم نحول هذا اليوم اليولياني إلى تاريخ ميلادي.
* التحويل من اليوم اليولياني إلى تاريخ هجري
قراءة الأكواد من الشمال إلى اليمين
كود PHP:
L = JD - 1948440 + 10632
N = (L - 1) / 10631
L = L - 10631 * N + 354
J = ((10985 - L) / 5316) * ()50 * L) / 17719) + (L/ 5670) * ((43 * L) / 15238)
L = L – ((30 - J) / 15) * ((17719 * J) / 50) - (J/ 16) * ((15238 * J) / 43) + 29
M = (24 * L) / 709
D = L - (709 * M) / 24
Y = 30 * N + J – 30
JD: هو اليوم اليولياني الموافق للتاريخ الميلادي المراد تحويله، و لإيجاد اليوم اليولياني انظر الملحق (1).
M: الشهر الهجري.
D: اليوم الهجري.
Y: السنة الهجرية.
ملاحظة هامة: إن نتيجة القسمة في جميع العمليات الحسابية أعلاة يجب أن تؤخد لأكبر عدد صحيح، أي بشطب الكسور الناتجة، و لذلك يجب برمجة هذه المعادلات في الحاسوب على النحو التالي:
كود PHP:
L = Int(JD) - 1948440 + 10632
N = Int((L - 1) / 10631)
L = L - 10631 * N + 354
J = Int((10985 - L) / 5316) * Int((50 * L) / 17719) + Int(L / 5670) * Int((43 * L) / 15238)
L = L - Int((30 - J) / 15) * Int((17719 * J) / 50) - Int(J / 16) * Int((15238 * J) / 43) + 29
M = Int((24 * L) / 709)
D = L - Int((709 * M) / 24)
Y = Int(30 * N + J - 30
* التحويل من تاريخ هجري إلى يوم يولياني
كود:
كود PHP:
JD = (11 * Y + 3) / 30 + 354 * Y + 30 * M - (M - 1) / 2 + D + 1948440 – 385
JD: اليوم اليولياني، و يحول إلى تاريخ ميلادي باستخدام المعادلات في الملحق (1).
Y: السنة الهجرية.
M: الشهر الهجري.
D: اليوم الهجري.
ملاحظة هامة: إن نتيجة القسمة في جميع العمليات الحسابية أعلاة يجب أن تؤخد لأكبر عدد صحيح، أي بشطب الكسور الناتجة، و لذلك يجب برمجة المعادلة أعلاه في الحاسوب على النحو التالي:
كود PHP:
JD = Int((11 * Y + 3) / 30) + Int(354 * Y) + Int(30 * M) - Int((M - 1) / 2) + D + 1948440 - 385
تحويل اليوم اليولياني إلى تاريخ ميلادي و بالعكس
1- تحويل التاريخ الميلادي إلى يوم يولياني:
كود PHP:
- فلتكن Y = السنة، M = الشهر، D = اليوم.
- إذا كانت M < 2 فإن: M = M, Y = Y.
- إذا كانت M = 1 أو 2، فإن (Y = Y -1)، (M = M + 12).
- إذا كان التاريخ بالتقويم الجريجوري (بعد 15/10/1582م) فإن
A = INT(Y/100) B = 2 - A + INT (A/4)
- إذا كان التاريخ بالتقويم اليولياني (قبل 15/10/1582م) فإن B = 0.
JD = INT(365.25(Y+4716)) + INT(30.6001 (M+1)) + D + B - 1524.5
2- تحويل اليوم اليولياني إلى تاريخ ميلادي:
[align=right]
كود PHP:
L = JD + 68569
N = (4 * L) / 146097
L = L – (146097 * N + 3) / 4
I = (4000 * (L+1)) / 1461001
L = L – (1461 * I) / 4 + 31
J = (80 * L) / 2447
D = L – (2447 * J) / 80
L = J / 11
M = J + 2 – 12 * L
حيث إن:
JD: اليوم اليولياني المراد تحويله.
D: اليوم الميلادي.
M: الشهر الميلادي.
Y: السنة الميلادية.
ملاحظة هامة: إن نتيجة القسمة في جميع العمليات الحسابية أعلاة يجب أن تؤخد لأكبر عدد صحيح، أي بشطب الكسور الناتجة.
المصدر: ديوان كنوز الاسرار والمخطوطات 00201147228058 - من قسم: ديوان مقالات عامة في علم الفلك