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

عمليات حسابية على الوقت

بدأه بنت العز في 18 فبراير 2008 · 15 رد · 4,370 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

حقيقة لا اعرف ان كنت قد اخترت القسم الصحيح او لا

فأنا ابرمج بـ php ولكن عندي مشكلة في العمليات الحسابية على الوقت

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

في الوضع الطبيعي تكون مدة العمل من 8 صباحاً وحتى 2 ظهرا وبالتالي عدد ساعات العمل لليوم الواحد ستكون 6 ساعات

ولكن في حين حدوث تأخير سواء في وقت الحضور أو الانصراف

على سبيل المثال :

لو كان وقت الحضور هو 8:27 (أي متأخرة 27 دقيقة) ووقت الانصراف 1:09 (اي انها خرجت قبل الموعد الرسمي بـ51 دقيقة)

فستكون عدد ساعات العمل بالتحديد 4:42

اريد العملية الحسابية التي اقوم من خلالها بحساب عدد ساعات العمل اليومي بالتحديد كما في المثال

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

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

#2

أختي بنت العز أنصحك ب vb6 فهو أسهل .

من سيحدد وقت الدخول و الخروج .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#3
SIFE-C كتب:
أختي بنت العز أنصحك ب vb6 فهو أسهل .

من سيحدد وقت الدخول و الخروج .

اخي الكريم انا مجبرة باستخدام الـ php فهذا نظام العمل

وقت الدخول والخروج يتحدد يوميا بدخول كل موظفة وخروجها

عن طريق تمرير بطاقتها على قارئ البطائق الضوئية

#4

فكرة الحساب :

حول وقت الي وقت من 24 ساعه مثلا 1:09 تصبح 13:09

وبعدين اطرحي الوقت الصغير من الكبير يعني 13:09 - 8:27

الطرح الدقائق من الدقائق والساعات من الساعات.

مع ملاحظه : عند طرح الدقائق اذا دقائق الخروج اقل من دائق الدخول نضيف لها 60 ونطرح من ساعات الخروج واحد.

9+60=69

13-1=12

69-27=42

12-8=4

هذه الطريقة

تم تعديل هذه المشاركة بواسطة فهدالشلوي في 18 فبراير 2008 في 18:11

tvquran_6.gif

#5
فهدالشلوي كتب:
فكرة الحساب :

حول وقت الي وقت من 24 ساعه مثلا 1:09 تصبح 13:09

وبعدين اطرحي الوقت الصغير من الكبير يعني 13:09 - 8:27

الطرح الدقائق من الدقائق والساعات من الساعات.

مع ملاحظه : عند طرح الدقائق اذا دقائق الخروج اقل من دائق الدخول نضيف لها 60 ونطرح من ساعات الخروج واحد.

9+60=69

13-1=12

69-27=42

12-8=4

هذه الطريقة

جزاك الله خيرا اخي فهد

ممتنة لك بالفعل

فلي اسبوع وانا احاول في هذه المشكلة

زادك الله علما وفضلا

#6

الموضوع ممكن حلة بأسلوب أبسط باستخدام Unix timestamp عن طريق الدالة

time

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

#7

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

استفدت بالفعل جزيتم خيرا

عندي سؤال اخر اذا سمحتوا

كيف احسب الفرق بالايام بين تاريخين

يعني على سبيل المثال لو كان لدي التاريخ

2/1/2000 والتاريخ 17/3/2003

اريد عدد الايام بين التاريخين

هل هناك دالة تقوم بذلك ؟؟

#8

لحساب الفرق بالايام اضربي السنه في 360 والشهر في 30 واجمعيها مع عدد الايام

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

ثم اطرحي الرقمين يظهر الفرق بالايام.

tvquran_6.gif

#9

الاخ فهد اشكر لك تجاوبك

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

لكن في السنة الميلادية تكون السنة 365 يوما او 366 اذا كانت كبيسة

والاشهر ليست ثابتة (30 يوما) كما تعرف حيث تتراوح الايام مابين 28-29-30-31

استخدمت الموقع http://www.timeanddate.com/date/duration.html

لحساب الفرق بين التاريخين للتأكد من صحة العملية لكن النتيجة لم تتطابق

حاولت الاستفادة من الكود المستخدم ولكن يبدوا ان هناك بعض الاكواد الغير ظاهرة مع العلم ان العملية تتم بالجافا سكريبت هنا

فهل تختلف العملية الحسابية باختلاف السنة الهجرية عن الميلادية

جزاكم الله خيرا

#10

نعم انا افترضت ان السنه 360 يوم والشهر 30 يوم . وطبعا هذا الامر غير دقيق.

تحتاجين معرفه اكثر في السنه مثلا بعد كم سنه تكون كبيسة وما هي الاشهر التي تكون 30 يوم و31 و 29.

هذه معلومات لا املكها وقد يكون هناك دوال جاهزة في php.

tvquran_6.gif

#11

حاولت البحث على دوال جاهزة في php لكني لم اجد حتى الان

قمت بعمل نفس العملية الحسابية التي سبقت بذكرها ولكن وضعت في الاعتبار بأن السنة 365 يوما وقسمته على 12 ليعطيني كمعدل ثابت 30.42 يوما في الشهر

اتممت الحسابات على هذا الاساس .. اعطاني ناتج قريب جدا من القيمة المطلوبة ولكن ليست بالتمام القيمة المطلوبة !!

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

قمت بحصر الايام بالتحديد على الشهور فكانت كالتالي :

الشهور التي تحوي 28 يوما >> شهر فبراير

الشهور التي تحوي 29 يوما >> شهر فبراير (في حالة السنة الكبيسة فقط)

الشهور التي تحوي 30 يوما >> شهر (4) ابريل - شهر (6) جون - شهر (9) سبتمبر - شهر (11) نوفمبر

الشهور التي تحوي 31 يوما >> شهر (1) جانيوري - شهر (3) مارش - شهر (5) ماي - شهر (7) جولاي - شهر (8) اوقست - شهر (10) اكتوبر - شهر (12) ديسمبر

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

فهل ستفيد هذه المعلومات لايجاد العلاقة؟؟

#12

عدد ايام في السنوات =(عدد السنوات مقسوم على 4 ) + عدد السنوات × 365

عدد ايام في الاشهر:

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

مثلا 3 اشهر =31+28 + 31=90 يوم

tvquran_6.gif

#13

اشكرك اخي الكريم فهد على تعاونك الصبور معي :)

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

واحببت وضعها هنا للفائدة .. وشكرا للمعروف

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

الدالة التي تقوم بحساب الفرق بين تاريخين بالايام :

function dateDiff($dformat, $endDate, $beginDate)
{
$date_parts1=explode($dformat, $beginDate);
$date_parts2=explode($dformat, $endDate);
$start_date=gregoriantojd($date_parts1[0], $date_parts1[1], $date_parts1[2]);
$end_date=gregoriantojd($date_parts2[0], $date_parts2[1], $date_parts2[2]);
return $end_date - $start_date;
}

ويتم استدعاءها كالتالي :

بافتراض القيم للمتغيرين

$date1="02/01/2001";
$date2="05/11/2003";

مع ملاحظة ان صيغة التاريخ تكتب كالتالي : الشهر/ اليوم/ السنة

يكون الاستدعاء:

print "If we minus " . $date1 . " from " . $date2 . " we get " . dateDiff("/", $date2, $date1) . ".";

وبعد تنفيذ الكود ستكون النتيجة كالتالي :

If we minus 02/01/2001 from 05/11/2003 we get 829.

تم تعديل هذه المشاركة بواسطة بنت العز في 4 مارس 2008 في 12:28

#14

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

وإسهاما مني في حل بعض المشاكل

كنت قد صممت صفحة لحساب الفارق الزمني بالأيام والشهور والسنين بين تاريخين

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

طوعت الدالة لتقوم بنفس الغرض

منتظر ملاحظات الإخوة على المرفقين

mas_datediff1.rar

mas_datediff2.rar

التغير هو القانون الدائم للحياة.ودوام الحال من المحال

فلماذا لا نتغير بإرادتنا إلى ما نريد؟ قبل أن تغيرنا الحياة مجبرين إلى ما لا نريد؟

موقعي

#15

اخي ماس .. اطلعت على الكود الذي قمت بإرفاقه

واعتقد انك استخدمت الدالة استخداما صحيحا .. ولكن

لا اعلم لماذا عندما حاولت تشغيل الصفحة ظهر لي كود الحسابات مكتوبا وكأنه نص بأول الصفحة

وعندما نقرت على زر (احسب) لم يقمل بأي اكشن !!

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

موفق بإذن الله

#16
بنت العز كتب:
اخي ماس .. اطلعت على الكود الذي قمت بإرفاقه

واعتقد انك استخدمت الدالة استخداما صحيحا .. ولكن

لا اعلم لماذا عندما حاولت تشغيل الصفحة ظهر لي كود الحسابات مكتوبا وكأنه نص بأول الصفحة

وعندما نقرت على زر (احسب) لم يقمل بأي اكشن !!

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

موفق بإذن الله

لا أدري أين السبب؟

فهل تجربين الأكواد على سيرفر محلي أم......؟

على العموم

الملف الأول

و

الملف الثاني

بالتوفيق

التغير هو القانون الدائم للحياة.ودوام الحال من المحال

فلماذا لا نتغير بإرادتنا إلى ما نريد؟ قبل أن تغيرنا الحياة مجبرين إلى ما لا نريد؟

موقعي

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