05-10-13, 12:06 PM
(04-10-13, 04:48 PM)shummry كتب : عندما يكون التاريخ في المتغير 30/02/1434
تأتي رسالة String was not recognized as a valid DateTime.
الا عند تنفيذ الأمر
كود :
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar")
فإنه يقبل وفي نفس الوقت لن يقبل 30/3
او 30/5
وهكذا للأشهر الفردية
تحياتي لك وشكرا على الإضافة
لا حرمك الله الأجر
لقد وجدت حلا عقيما ولكنه يفي بالمطلوب مؤقتا
الحل كالتالي :
عند تحويل تقوم البرنامج الى التقويم الهجري عن طريق هذا الأمر
فإن البرنامج لن يقبل يوم 30 للأشهر الزوجية 2-4-6-8-10-12كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar-sa")
وعند تحويل التقويم الى ميلادي (مصر)
فإن البرنامج لن يقبل تاريخي 29/2 و 30/2كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar-eg")
وعند استخدام التقويم العربي عن طريق هذا الأمر
فإن البرنامج لن يقبل يوم 30 للأشهر الفردية 1-3-5-7-9-11كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar")
لذلك كان الحل كالتالي
التبديل بين التقويمين الميلادي والعربي على حسب التاريخ المعطى
فإذا كلن التاريخ المغطى هو 29/2 أو 30/2 فإنه سيتم تحويل تقوم البرنامج الى العربي (ar) فقط
وإلا سيتم اعتماد التاريخ الميلادي المصري (ar-eg)
طبعا عن طريق جملة If
أرجو من الإخوة الخبراء عدم البخل على بالنصح في حال خرجو بخوارزمية أفضل مما ذكرت
ولكم خالص شكري وتقديري
تحياتي
السلام عليكم ورحمة الله وبركاته
أخي الكريم
سبب الاختلاف أن كل دولة تعتمد تقويم معين فمثلا تقويم السعودية "ar-SA" يعتمد على تقويم أم القرى الذي تختلف أيام شهوره في كل عام تقريبا
أما التقويم العربي "ar" فإنه يعتمد على التقويم الهجري ذو الأشهر الثابتة بمعنى أن الشهر الفردي عدد أيامه 29 والأشهر الزوجية عدد أيامها 30 عدا شهر 12 - الذي أستطيع أن أشبهه بشهر فيرارير في الميلادي - فإنه يأتي مرة 29 وتارة 30 بحسب عدد أيام السنة
ولهذا السبب تجد الاختلاف بين التقويمين

