![]() |
|
خوارزمية : التحويل بين التاريخ الميلادي والتاريخ الهجري - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : خوارزمية : التحويل بين التاريخ الميلادي والتاريخ الهجري (/showthread.php?tid=4230) |
خوارزمية : التحويل بين التاريخ الميلادي والتاريخ الهجري - Omar Mekkawy - 20-09-12 السلام عليكم إخواني الكرام
كيف حالكم ؟ هذا الموضوع ملك للأستاذ Mohammed Asaad وقد طلبت منه أن أنقل مشاركاته ووافق بحمد الله ![]() بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته في هذا الموضوع ساشرح ان شاء الله آليه التحويل بين التاريخ الميلادي والتاريخ الهجري قبل الدخول في تفاصيل التحويل علينا معرفة بعض الامور :
اليوم اليولياني هو بمثابة عداد أيام مستمر منذ العام 4712 قبل الميلاد، فاليوم اليولياني الموافق ليوم 01/01/2002م مثلا هو 2452276.0، أي أن عدد الأيام منذ العام 4712 قبل الميلاد و حتى 01/01/2002 هو 2452276.0 يوما. و يبدأ اليوم اليولياني عند الساعة 12 ظهرا حسب توقيت جرينتش.
الآن ندخل الى آلية التحويل :
في البداية ما حدا يسالني عن الارقام التي دخلت في التحويل لاني شخصيا لا اعرف كيف جاءت أولا:تحويل التاريخ الميلادي إلى هجري... تتم عملية التحويل هنا على مرحلتين:
اولا: تحويل التاريخ الميلادي الى هجري:
هنا ايضا يتم تقسيم آلية التحويل الى قسمين حسب نوع التقويم الميلادي (يولياني ام غريغوري) نختبر اذا كان التقويم الميلادي غريغوري ام لا قلنا مسبقا ان التاريخ الميلادي يكون غريغوري اذا كانالتاريخ الميلادي بعد 15/10/1582م دعونا نحلل شرط التقويم الغريغوري ..ليكون التقويم غريغوي يجب ان تتحقق احد الشروط التالية:
في البداية قمت بعمل بناءة من نوع Structure تمثل التاريخ وتحتوي ثلاثة اعضاء السنة والشهر واليوم.
كود : Structure xDateوالان قم بتصميم نموذج يحتوي على 6 TextBox وزر واحد والان داخل اجراء الClick التابع للزر Button1 نقوم بحجز متغير جديد من نوع xDate وبعد ذلك نقوم باسناد القيم الثلاثة (اليوم والشهر والتاريخ)لاعضاءه الثلاثة كود : Dim mDate As xDateكود : mDate.Day = Int(TextBox1.Text)وكما اسلفت هناك الية للتعامل مع الغريغوي والية اخرى للتعامل مع اليولياني: وفي المرحلة التالية نقوم بتحويل التاريخ الميلادي الى اليولياني كود : If ((mDate.Year > 1582) Or ((mDate.Year = 1582) And (mDate.Month > 10)) Or ((mDate.Year = 1582) And (mDate.Month = 10) And (mDate.Day > 14))) Thenوالان نقوم بتحويل التاريخ البولياني الى هجري وقم تم استخدام ارقام (لا اعلم من اين اتت) ![]() كود : Dim L, N, J As Integerفي النهاية نقوم باسناد القيم الثلاثة الى الصناديق الثلاثة كود : TextBox4.Text = mDate.Dayهنا نكون قد انتهينا من تحويل التاريخ الميلادي الى هجري ثانيا:تحويل التاريخ الهجري إلى ميلادي... نتبع نفس الالية بتحويل التقويم الهجري الى يولياني ثم الى ميلادي كود : Dim hDate As xDateكود : JD = Int((11 * hDate.Year + 3) / 30) + 354 * hDate.Year + 30 *hDate.Month - Int((hDate.Month - 1) / 2) + hDate.Day + 1948440 - 385وفي النهاية نقوم باستقراء الثلاثة قيم كما في السابق
واحب ان انوه ان هذه الخوارزمية هي الشائعة في جميع البرامج الدقيقة للتحويل
طبعا البعض حيقول انو في دوال جاهزة للتحويل لكن كما العادة احببت توضيح مبدأ التحويل ![]() والسلام عليكم |