تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] من يحل مشكلتي مع التاريخ وله الدعاء
#1
Sad 
السلام عليكم ورحمة الله وبركاته

في البداية أحب أن أشكر جميع الأخوة القائمين على هذا المنتدى الرائع

وبدون إطالة أود طرح مشكلتي

مشكلتي تتمثل في أني عندما أقوم بتعريف متغير من نوع "تاريخ" كالتالي
كود :
Dim dd as date
تبدأ المشكلة عندما أريد اسناد تاريخ لهذا المتغير

فعندما يكون التاريخ المعتمد للبرنامج هو التاريخ الهجري (سواء عن طريق الوندوز أو عن طريق أمر ( Globalization.CultureInfo ) )

فإن هذا المتغير لن يقبل بأي حال من الأحوال التواريخ التالية

30/2
30/4
30/6
30/8
30/10
30/12

يعني بالعربي لن يقبل يوم 30 من أي شهر زوجي من أشهر السنة الهجرية


----------------------------

أحب أن انوه الى أنني تغلبت على هذه المشكلة بإجبار البرنامج على اعتماد التاريخ الميلادي ولو شكليا فقط عن طريق الأمر
كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar-eg")
انحلت المشكلة ولكن بقي أن شهر 2 لن يقبل يوم 30 وفي أغلب الأحيان لن يقبل حتى 29

يعني 30/2 لن يتم قبوله وهذه مشكلة

كيف يمكنني جعل المتغير يقبل أي قيمة تاريخ فكما هو معروف التاريخ الهجري قد يكون 30 يوم لأي شهر

وانا أحتاج الى استخدام التاريخ الهجري في برنامجي

مع العلم بأنه عند اعتماد التاريخ الهجري للبرنامج لن يقبل يوم 30 من الأشهر الزوجية 2-4-6-8-10-12

أتمنى تكون وصلت الفكرة

واذا فيه أحد ما فهم المقصود او استصعب عليه أمر ما مما ذكرته لا يتردد في طرح تساؤله

لأني أقوم على مشروع الآن والبرنامج متوقف عند هذه النقطة

تحياتي للجميع

مرفق صورة الخطأ


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته


التاريخ الهجري يعتبر مشكلة إذا أردت إعتماء تاريخ لا يتوافق مع حسابات نظام التشغيل.
بمعنى لو أن حساب شهر رجب لسنة ما في نظام التشغيل هو 29 فلن يقبل منك اسناد تاريخ لنفس السنة بيوم 30 لهذا الشهر.

هناك حل مريح من هذه الناحية وهو اعتماد متغير نصي للتاريخ الهجري والعمل على أساسه، ويفضل أن يكون تنسيقه السنة ثم الشهر ثم اليوم لتستطيع طبيق البحث بواسطته.

بالنسبة إذا كان مرادك التاريخ الهجري بتقويم أم القرى يمكنك مشاهدة الموضوع (@@@ محول التاريخ (هجري، ميلادي) @@@) ففيه مرفق يحتوي دوال تخص تقويم أم القرى.


وأرجو أن تتواصل معنا في هذا المنتدى....



السلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة: سعود , shummry
#3
أشكرك أخي ابو رائد على الإضافة

ولكن ما ذكرته من جعل التاريخ في متغير نصي لا يفيدني

لماذا

لأنه وببساطة أنا أريد أن أقوم بالمقارنة المتغير من نوع Date مع عدة تواريخ

وسأقوم بحساب الفرق بين تاريخين عن بالأأيام

وهذه لن تتم داخل لغة البرمجة الا بوجود متغير من نوع Date

سأطلع على الرابط الذي وضعته ولي عودة بإذن الله


تحياتي لك وجزاك الله خيرا

بالنسبة للدالة التي وضعتها هي ممتازة

ولكن لايوجد في هذه الدالة أي متغير من نوع Date
حتى أنني عندما قمت بتحويل التاريخ التالي 12/01/2013 الى الهجري فإنه أرجع لي قيمة 30/2/1434

وعندما عدلت الكود ليضع التاريخ الهجري في متغير Date قبل عرضة في textbox2

توقف البرنامج عن العمل لنفس الخطأ

رغم أن الكود الذي أضفته أضفته في الدالة في الأسفل قبل استعادة الاعدادات الافتراضية لل Globalization

فقط أضفت سطرا واحدا وهو

كود :
dim md as date = con

فأصبح الكود كالتالي

كود :
If y > "1883" And y < "2029" Then
                con = GetHijriDate(dateValue)
                 Dim md As Date = con
                          End If
الرد }}}
تم الشكر بواسطة:
#4
طيب أخي shummry

إقتباس : ولكن ما ذكرته من جعل التاريخ في متغير نصي لا يفيدني

حول المتغير النصي إلى تاريخ:

PHP كود :
Dim s As String "27/9/2013"
Dim d As Date Convert.ToDateTime(s)

MsgBox(d.ToLongDateString
سبحان الله وبحمده سبحان الله العظيم

الرد }}}
تم الشكر بواسطة: shummry
#5
عندما يكون التاريخ في المتغير 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
وهكذا للأشهر الفردية


تحياتي لك وشكرا على الإضافة

لا حرمك الله الأجر

لقد وجدت حلا عقيما ولكنه يفي بالمطلوب مؤقتا

الحل كالتالي :

عند تحويل تقوم البرنامج الى التقويم الهجري عن طريق هذا الأمر
كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar-sa")
فإن البرنامج لن يقبل يوم 30 للأشهر الزوجية 2-4-6-8-10-12



وعند تحويل التقويم الى ميلادي (مصر)
كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar-eg")
فإن البرنامج لن يقبل تاريخي 29/2 و 30/2


وعند استخدام التقويم العربي عن طريق هذا الأمر
كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar")
فإن البرنامج لن يقبل يوم 30 للأشهر الفردية 1-3-5-7-9-11

لذلك كان الحل كالتالي

التبديل بين التقويمين الميلادي والعربي على حسب التاريخ المعطى

فإذا كلن التاريخ المغطى هو 29/2 أو 30/2 فإنه سيتم تحويل تقوم البرنامج الى العربي (ar) فقط

وإلا سيتم اعتماد التاريخ الميلادي المصري (ar-eg)

طبعا عن طريق جملة If

أرجو من الإخوة الخبراء عدم البخل على بالنصح في حال خرجو بخوارزمية أفضل مما ذكرت

ولكم خالص شكري وتقديري

تحياتي
الرد }}}
تم الشكر بواسطة:
#6
(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
وهكذا للأشهر الفردية


تحياتي لك وشكرا على الإضافة

لا حرمك الله الأجر

لقد وجدت حلا عقيما ولكنه يفي بالمطلوب مؤقتا

الحل كالتالي :

عند تحويل تقوم البرنامج الى التقويم الهجري عن طريق هذا الأمر
كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar-sa")
فإن البرنامج لن يقبل يوم 30 للأشهر الزوجية 2-4-6-8-10-12



وعند تحويل التقويم الى ميلادي (مصر)
كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar-eg")
فإن البرنامج لن يقبل تاريخي 29/2 و 30/2


وعند استخدام التقويم العربي عن طريق هذا الأمر
كود :
Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("ar")
فإن البرنامج لن يقبل يوم 30 للأشهر الفردية 1-3-5-7-9-11

لذلك كان الحل كالتالي

التبديل بين التقويمين الميلادي والعربي على حسب التاريخ المعطى

فإذا كلن التاريخ المغطى هو 29/2 أو 30/2 فإنه سيتم تحويل تقوم البرنامج الى العربي (ar) فقط

وإلا سيتم اعتماد التاريخ الميلادي المصري (ar-eg)

طبعا عن طريق جملة If

أرجو من الإخوة الخبراء عدم البخل على بالنصح في حال خرجو بخوارزمية أفضل مما ذكرت

ولكم خالص شكري وتقديري

تحياتي

السلام عليكم ورحمة الله وبركاته

أخي الكريم

سبب الاختلاف أن كل دولة تعتمد تقويم معين فمثلا تقويم السعودية "ar-SA" يعتمد على تقويم أم القرى الذي تختلف أيام شهوره في كل عام تقريبا
أما التقويم العربي "ar" فإنه يعتمد على التقويم الهجري ذو الأشهر الثابتة بمعنى أن الشهر الفردي عدد أيامه 29 والأشهر الزوجية عدد أيامها 30 عدا شهر 12 - الذي أستطيع أن أشبهه بشهر فيرارير في الميلادي - فإنه يأتي مرة 29 وتارة 30 بحسب عدد أيام السنة

ولهذا السبب تجد الاختلاف بين التقويمين
الرد }}}
تم الشكر بواسطة: shummry
#7
أشكرك أخي sooriaty03 على الإضافة الرائعة

والآن وبعد ما ذكرت كيف يمكنني أن أصنع برنامج يقبل التاريخ الهجري بمختلف إدخالاته وأخطائه

فكما تعلم التاريخ الهجري غير ثابت ولو أردت تثبيت استخدام تقويم أم القرى فهو يأتي خطأ في معضم الأوقات ولن يقبل 30 يوم لبعض الأشهر التي أيامها الفعلية 30

ولو اعتمدت التقويم ar فإنه لن يقبل يوم 30 للأشهر الفردية وهذا كذلك غير منطقة

إذن

ما رأيك بطريقتي في التبديل بين التقويمين ar و ar-eg


تحياتي لك وللأخوة المطالعين
الرد }}}
تم الشكر بواسطة:
#8
اخي يالعزيز shummry تحية طيبة
اخي العزيز ان التعامل مع التاريخ الهجري وخصوصا في برامج المحاسبة او التواريخ المستقبلية له مشاكل كثيرة جدا كما قال الاخوة
لذا نبتعد عن استخدام او ادراج التاريخ الهجري في مثل هذة البرامج ونكتفي بعرض التاريخ الميلادي في تكست مثلا ويتم تحويله الى الهجري في تكست اخر ومع ذالك له مشاكل متفرعة

لو تفيدنا لنحل المشكلة من ناحية اخرى لماذا انت تستعمل التاريخ الهجري في برنامجك

والسلام عليكم ورحمة الله وبركاتة
الرد }}}
تم الشكر بواسطة: shummry
#9
أخي العزيز nmst70 تحية طيبة

بالنسبة ل

حاجتي لاستعمال التاريخ الهجري تتمثل في الآتي

برنامج مواعيد مستوصف بحيث يكون لكل مريض عدة مراجعات يتم ادخالها بالتاريخ الهجري (والهجري فقط) (أي أنه عند ادخالها بالميلادي يجب تحويلها الى الهجري)

يجب ألا يتكرر الموعد للمريض في نفس اليوم

كما أنه هناك فترات لكل مريض لا يجب أن يكون فيها موعد ما

يتم تحديد هذه الفترات بواسطة معادلة تجرى على مواعيد المراجعات بطريقة معقدة

مثلا (لو كان للمريض مراجعتين يفصل بينهما أقل من اسبوع ) فإنه يحرم عليه المراجعة لمدة اسبوع من تاريخ المراجعة الأولى ويومين من تاريخ المراجعة الثانية

هذا مثال فقط وهناك الكثير من الحسابات والشروط

المشكلة في أنه مدخل البيانات سيقوم بإدخال تواريخ المراجعات للمرضى وسيقوم بطباعة تقرير عن كل شهر (أول مراجعة وآخر مراجعة)

لكل شهر ولكل فترة زمنية محددة يحددها هو

عندما يطبع تقرير لشهر صفر ويكون للمريض تاريخ مراجعة في آخر يوم من هذا الشهر يجب أن تظهر في التقرير كما هي 30/2 كما يجب أن يقبل البرنامج التاريخ على شكل متغير ليقوم بإجراء الحسابات عليه من إضافة للأيام ومقارنة التواريخ


أرجو أن تكون فهمت الفكرة (والشرح الذي في الأعلى هو لفكرة بسيطة من أفكار البرنامج المتشعبة)

كلها لم أواجه فيها مشاكل كما أنني أنهيت العمل على البرنامج وهو تحت الاختبار النهائي الآن

ولكن أصحاب البرنامج يطلبون أن يقبل البرنامج جميع التواريخ ويجري عليها حسابات

الحل كما وصلت إليه هو بالتبديل بين التقويمين ar-eg و ar

ولكن لو كان هناك منكم من لديه آليه معينة ليقبل متغير التاريخ أي تاريخ فإني سأكون له ممتن

وفي حالة لم أجد طريقة نافعة سأعتمد الطريقة أعلاه وأمري إلى الله

تحياتي لكم جميعا وبانتظاركم

أخى nmst70

سأكرر عليك نفس السؤال الذي سألته الشباب


ما رأيك في طريقتي بالتبديل بين التقويمين ar-eg و ar
الرد }}}
تم الشكر بواسطة:
#10
اخي العزيز اسعد الله اوقاتك

لقد وصلت الفكرة 100% وبما اننا نتعامل مع البرامج المحاسبية وبرامج الاستحقاقات تفترض

لو فرضا انة تم تحديد موعد للمرضى يوم 1435/02/30 وعددهم 15 وتم تحديد موعد لمرضى اخرين في يوم 1435/03/01 عدد 20 مريض وتبين في هذا الموعد ان شهر 2 لعام 1435 هو 29 يوم وبعدها يأتي تاريخ 1435/03/1 اين ستذهب مواعيد المرضى وعددهم 15 مريض يوم 1435/02/30 كما تم تحديد موعد لهم للعلاج .

اخي العزيز هذا الكلام حتى يكون البرنامج مبني على اسس صحيحة

والسلام عليكم ورحمة الله وبركاتة
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] ظهور التاريخ غير مرتب بالأقدم في datagridview مبرمج صغير 1 4 304 26-01-24, 03:41 PM
آخر رد: atefkhalf2004
  [VB.NET] التاريخ في أداة أبو سامر لطباعة DataGridView مبرمج صغير 1 17 629 26-01-24, 01:52 AM
آخر رد: مبرمج صغير 1
  [VB.NET] مشكلة التاريخ في الداتا قريد فيو مبرمج صغير 1 6 399 24-01-24, 10:12 PM
آخر رد: annagui
  [VB.NET] تحويل التاريخ بين أداتين تايم بيكر في نفس الفورم محمد العموري 1 271 29-12-23, 10:44 PM
آخر رد: Kamil
  التاريخ الهجرى mmaalmesry 9 1,075 07-12-23, 01:32 PM
آخر رد: kebboud
Heart [C#.NET] حول خطأ في فرز عامود التاريخ عندما تكون إحدى الخانات فارغة بلال بلال 3 338 16-11-23, 12:02 AM
آخر رد: بلال بلال
  التحكم فى عرض طريقة التاريخ فى الاداة datetimepicker Ahmed.vb 3 508 08-11-23, 01:27 AM
آخر رد: الحزين اليماني
  مطلوب كود جمع التاريخ Ahmed.vb 3 444 22-10-23, 08:32 AM
آخر رد: Ahmed5
  تحويل التاريخ في الداتاقريدفيو إلى أيام عربية صالح عبدالله 2 318 08-10-23, 12:17 AM
آخر رد: صالح عبدالله
  مشكلة عجيبة و غريبة ! عندما اقوم بطباعة فاتورة من Reportveiwer ينطبع التاريخ هجري moh61 2 327 09-09-23, 11:15 AM
آخر رد: alfaiz678

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم