الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشلكة DateDiff يطلعي يوم ناقص

بدأه DSA في 6 أغسطس 2005 · 19 رد · 2,093 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام علييكم كيف الحال

متاسف ياخوان والله ان مخي كان وقتها مشفر اككر اسف مره ثاني للمشرفين على الموضوع

والله يعطيكم الهافيه يااخوان الي شافو المشكة وششفرت مخهم :s

وشكرا :s

تم تعديل هذه المشاركة بواسطة DSA في 6 أغسطس 2005 في 15:37

#2

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

اذا كنت تريد حساب الفرق بالايام فاكتب الامر بهذه الطريقة

Private Sub Command1_Click()
Text1.Text = DateDiff ("D" , OldDate , NewDate)
End Sub

هذا الكود يعود بالفرق بالايام واذا أردت حساب الفرق بالشهور فغير D الى M واذا كنت تريده بالسنين فغيرها الى YYYY :rolleyes:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

مشكوور اخوي قوست

والله ياخوان اختبصت الامور عندي انا ماابغا احسب الفرق انا عندي برنامج اجازات مثلا

تبدأ في 1/1/1426 وتنتهي في 15/1/1426 يطلعي 14 انا ابغا يطلعلي الناتج 15

هذا اذا بغيت احسب الفرق صح الناتج بس الاجازة مشلكة وشكرا..........

آآآآآآآآآآآآآآآآسف جدا....

تم تعديل هذه المشاركة بواسطة DSA في 6 أغسطس 2005 في 16:06

#4

الظاهر انا حست الامور شوية على الشباب :wacko:

انا عندي برنامج اجازات مثلا ابغا الاجازة

تبدأ في 1/1/1426 وتنتهي في 15/1/1426 انا ابا يطلعلي 15 بس يطلعلي 14 :(

وهذي المشكلة

#5

السلام عليكم

اكيد بيظهر الناتج 14 لان الفرق بين 1 و 15 هو 14

حط 16 بدلا من 15

460.gif

#6
اقتباس
السلام عليكم

اكيد بيظهر الناتج 14 لان الفرق بين 1 و 15 هو 14

حط 16 بدلا من 15

او استعمل DateAdd بعد حساب الفرق :rolleyes:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7

مشكووور اخوي المتميز والله انك متميز بردودك واشكر كمان الاخ قوست

بس المشكلة ياخوان

لو كتبتب تبدأ من 2/1/1426 الى 10/1/1426 يطلعلي 8 وهذا صحيح بس لو كتبت البداية من 1 يطلعلي 9 ايام هي تجي الطريقة اللي انت كاتبها اخوي المتميز بس في شويه يعني

يعني مافيه طريقه ثانيه غير الي ذكرتوا يااخوان لاني ابغا من يكتب البداية والنهاية يطلعلي عدد الايام .

مشكووووور على ردودكم ..

#8

من البديهي انك اذا بدأت الاجازة يوم 2/8 و حتى 3/8 ( باعتبار ان هذين يومين) فانك تطرح اخر يوم في الاجازة ناقصاً اليوم الذي يسبق الاجازة و هو يوم 1/8 و ليس 2/8 لأن 2/8 هو من ضمن الاجازة

من قال لا إله إلا الله صادقا دخل الجنة

موقعي للتعارف و تبادل الأخبار http://www.xybond.com

#9

انا معاك يااخ hishamnasr على كلامك

الظاهر اني ماوضحت المشكلة كويس

المشكلة بس في بداية الشهر فقط لما تبدأ من مثلا 1/1 وتنتهي في 15/1 المفروض مدة الاجازة تطلعلي 15 يوم بس المشكلة يطلعلي 14 يوم

اما اذا كتبت بداية الاجازة في 2/1 وتنتهي 10/2 يطلعلي 8 والناتج هذا صحيح المشكة في اول يوم من الشهر ماادري وش الحل

#10

مافي اي خطأ

من يوم 2 و حتى يوم 10 8 أيام و هي 10-2 =8

و من يوم 1 الي يوم 15 14 يوم 15-1 =14

لو حسبتها صح العمليتين مافي بينهم فرق

من قال لا إله إلا الله صادقا دخل الجنة

موقعي للتعارف و تبادل الأخبار http://www.xybond.com

#11

والله شاكر لك اخوي hishamnasr راح اغلبك معاي

اخوي هشام انا ماايغا طرح عادي من ارقام اللي ابغاه انا مثلا::: محمد يبغى ياخذ اجازه فحدد مدة اجازته تبدأ في 1/1 وتنتهي في 15/1 مدة الاجازة الان 15 يوم بالظبط لما استخدم

الدالة DateDiff يطلعي الفرق 14 وهذي المشكلة بس فيه شي ثاني لما اخلي الاجازة تبدأ في 2/1 وتنتهي 10/2 يطلعلي مدة الاجازة 8 كذا تمام.

المشكلة فقط في بداية الشهر وبر ضه لما اخلي الاجازة في نهاية الشهر............................

وشاكر للاخوان المتابعين ............

#12

والله المسألة ابسط مما تتصور

مدة الاجازة = (تاريخ نهاية الاجازة - تاريخ بداية الاجازة) + 1

اقتباس
لما اخلي الاجازة تبدأ في 2/1 وتنتهي 10/2 يطلعلي مدة الاجازة 8 كذا تمام.

بطريقتك انت كده مش تمام لان يوم 2/1 يحسب مع مدة الاجازة فالمفروض ان تكون المدة 9 وليس 8

الكود اللى وضحناه قبل كده هو الحل

Private Sub Command1_Click()
D = DateDiff ("D", Date1, Date2)
Text1.Text = D + 1

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#13

في الحالة الاولى اجعل التاريخين 31/12/2004 و حتى 15/1/2005 و هي 15 يوم

لا يمكنك طرح يوم 1/1 لانه من ضمن الاجازة

هذا ما قصدته انا اعلاه في المشاركة8

من قال لا إله إلا الله صادقا دخل الجنة

موقعي للتعارف و تبادل الأخبار http://www.xybond.com

#14

اول شي اشكركم صراحه على المجهود اللي في الموضوع

صراحه الف الف شكر والله منتدى يعتز فيكم.

اقتباس
بطريقتك انت كده مش تمام لان يوم 2/1 يحسب مع مدة الاجازة فالمفروض ان تكون المدة 9 وليس 8

محسوب في الراحه بس انا ماابغا لوحسبته في عدد الايام كلامك صحيح راح يطلع9 ايام يحسب اول يوم في الراحه.

اقتباس
الحالة الاولى اجعل التاريخين 31/12/2004 و حتى 15/1/2005 و هي 15 يوم

كلامك صحيح اذا كتبت 31/1/2004 الى 10/1/2005 يطلع 10ايام بس لو تحسبها تطلع 11 يوم.

ماادري فيه كود غير كذا ....

تم تعديل هذه المشاركة بواسطة DSA في 9 أغسطس 2005 في 02:39

#15

اخى الكريم فلنحكم المنطق فى هذه المشكلة البسيطة عن طريق بعض الامثلة

لانه من الواضح ان الامر مختلط عليك

أولا : التاريخ من 1/1 الى 8/1

8 - 1 = 7 أيام ------------------------ نتيجة DateDiff

ثانيا : التاريخ من 2/1 الى 8/1

8 - 2 = 6 ايام ------------------------ نتيجة DateDiff

ثالثا : التاريخ من 3/1 الى 8/1

8 - 3 = 5 أيام ------------------------ نتيجة DateDiff

من الواضح ان اخر يوم لا يحتسب ضمن الاجازة بغض النظر اذا كنا فى اول الشهر او فى اى يوم اخر كما هو واضح وضوح الشمس

وانت تريد ان تحتسب الاجازة كاملة من اول يوم و حتى اخر يوم بالنسبة للتاريخ المدرج

اذا الحل العملى ان تزيد يوما على مجموع الايام الذى يظهر عندك كما قال الاخ ghost

1- لا خير في حسن الجسوم وطولها إن لم يزن حسن الجسوم عقول

2- لا تنظر إلى صغر الخطيئة .. ولكن انظر إلى عظم من عصيت

3- قد يجمع المال غير آكله . . ويأكل المال غير من جمعه

4- من وثق بالله أغناه ومن توكل عليه كفاه ومن خافه قلت مخافته ومن عرفه تمت معرفته

5- أن تضيء شمعة صغيرة خير لك من أن تنفق عمرك تلعن الظلام

6- لا يحزنك إنك فشلت مادمت تحاول الوقوف على قدميك من جديد

7- صديقك من يصارحك بأخطائك لا من يجملها ليكسب رضاءك

8 - الابتسامة كلمة طيبة بغير حروف

9- لا داعى للخوف من صوت الرصاص .. فالرصاصة التى تقتلك لن تسمع صوتها

10 -- يستطيع الناس أن يعيشوا بلا هواء بضع دقائق وبلا ماء أسبوعين وبلا

طعام حوالى شهرين وبلا أفكار سنوات لا حصر لها

من مواضيعى :

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

دروس تعلم كيف تصحح أخطائك بنفسك

برنامج الحائط النارى العربى ---- جديد

برنامج ساعة بالعقارب ------ جديد

لعبة سناك الشهيرة مع الكود

غير نظرتك لل picturebox وانظر ماذا فعلت بها

حمل ملف فلاش على الفورم بكل سهولة

مكتبة تحتوى على 50000 كتاب مجانى معظمها عن الكمبيوتر و البرمجة

برنامج المترجم العربى لترجمة الافلام

#16

بسم الله الرحمن الرحيم

أخي الكريم

الدالة DateDiff تعطي الفرق بالأيام بين التاريخ الأول والثاني ( بالميلادي وليس الهجري )

- كلامي ليس الاتكرار لكلام الأخوة الذين جاوبوا على الموضوع ، لكن أرجو أن تفهم ما يحصل في حالة استخدامك لـ DateDiff :

أي أنه عندما تريد أن تحسب أيام الراحة يجب أن يكون تاريخ بدء الاجازة هو التاريخ الأول وتاريخ بدء الدوام ( وليس تاريخ آخر يوم في الاجازة ) هو التاريخ الثاني في الدالة .

عندما تبدأ الاجازة في 1/1/1426 وتنتهي في 15/1/1426 فإن 16/1 هو أول يوم في الدوام ، فنستخدم الدالة كالتالي

Private Sub Command1_Click()
Text1.Text = DateDiff("D", "1/1/1426", "16/1/1426")
End Sub

ويكون الناتج 15 يوم وهو الجواب الصحيح .

أي أنك يجب أن تجد الفرق بين تاريخ بدء الاجازة وتاريخ بدء الدوام حيث أن آخر يوم في الاجازة هو من ضمنها .

أما المشاركة رقم 7 :

اقتباس
لو كتبتب تبدأ من 2/1/1426 الى 10/1/1426 يطلعلي 8 وهذا صحيح بس لو كتبت البداية من 1 يطلعلي 9 ايام هي تجي الطريقة اللي انت كاتبها اخوي المتميز بس في شويه يعني

عندما تبدأ الاجازة في 2/1/1426 وتنتهي في10/1/1426 يجب أن يكون الناتج 9 أيام وليس 8 كما قلت ،

اذاً لو طبقنا الدالة كما ذكرت سابقا لكان الجواب 9 . (عملية طرح طبيعية - لكنها بالتواريخ فقط )

أرجو أن تكون فهمتني .

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

تم تعديل هذه المشاركة بواسطة البريشي في 9 أغسطس 2005 في 10:33

********************* ******************** *********************

(( أشــهد أن لا اله الا الله ..... وأشهد أن محمد رسول الله ))

********************* ******************** *********************

لا تقـل من أيـن أبدأ

طـاعـة الله الـبدايـة

***

لا تقـل أين طـريـقي

شــرع الله الهـدايـة

***

لا تـقـل أيـن نعـيمي

جـنـة الله كـفـايـــــة

***

لا تقـل في الغـد أبدأ

ربمـــا تأتـي النهـايـــة

**************** **************** ****************

#17

أعتذر من الأخ VB6-Rocket

فأنا لم أنتبه لردك .

كما أرجو منك الاطلاع على الرسائل الخاصة.

والسلام عليكم

********************* ******************** *********************

(( أشــهد أن لا اله الا الله ..... وأشهد أن محمد رسول الله ))

********************* ******************** *********************

لا تقـل من أيـن أبدأ

طـاعـة الله الـبدايـة

***

لا تقـل أين طـريـقي

شــرع الله الهـدايـة

***

لا تـقـل أيـن نعـيمي

جـنـة الله كـفـايـــــة

***

لا تقـل في الغـد أبدأ

ربمـــا تأتـي النهـايـــة

**************** **************** ****************

#18

تحية طيبه للجميع

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

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

واليكم المثال ارجو الاطلاع عليه والمناقشة حوله

وتقبلو خالص تحياتي

اخوكم ZAHOF

zahof__for_ad_Num_to_date_Hejry.rar

تم تعديل هذه المشاركة بواسطة zahof في 22 سبتمبر 2008 في 10:01

#19

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

:tantrum: :tantrum: :tantrum: :tantrum: :tantrum: :tantrum: :tantrum: :tantrum: :tantrum: :tantrum: :tantrum:

#20

ولا تعليق واحد على الاضافة لييييييييييييييييييييييييييييييييش؟

مواضيع مشابهة