تقييم الموضوع :
  • 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 كما تم تحديد موعد لهم للعلاج .

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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تثبيت التاريخ علي الفورم ddemed 2 38 منذ 30 دقيقة مضت
آخر رد: محمود بكرى
  مشكلتي مع الباركود والله طفشني adel27 4 98 24-11-16, 01:42 PM
آخر رد: hglogtd
  [VB.NET] خطأ في التاريخ tifagreet 2 74 16-11-16, 04:02 PM
آخر رد: السرور
  [VB.NET] تحويل التاريخ لسلسلة نصية tifagreet 1 82 01-11-16, 01:28 PM
آخر رد: ممدوح
  سؤال بسيط في فصل التاريخ عن الوقت فراس صلاح 3 130 19-10-16, 04:17 AM
آخر رد: mhmd_911
  [VB.NET] ما هو الخطأ في هذا الكود ... وكيف يمكن تخزين التاريخ abo.alaa315 3 127 07-10-16, 03:33 PM
آخر رد: tifagreet
  [VB.NET] تغيير صيغة التاريخ dubai.eig 1 121 03-10-16, 08:14 PM
آخر رد: ممدوح
  اريد البرنامج يفتح بنفس هذا التاريخ الوهمي ddemed 4 107 02-10-16, 02:19 PM
آخر رد: ddemed
  اريد تثبيت التاريخ علي ملف معين ddemed 11 266 02-10-16, 09:19 AM
آخر رد: ddemed
  كيفيه تثبيت التاريخ علي الفورم ddemed 7 214 30-09-16, 08:59 PM
آخر رد: هاوي1995

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


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