تصحيح دالة تحويل التاريخ الى “ساعة,مضت”
من بين الأخطاء الشائعة هي استخدام الدالة round بدل intval
الأولى تحول العدد الى عدد تقريبي يعني مثلا لو الساعة 6 و النصف ستقول لنا الساعة 7 في حين الدالة الثانية intval تحذف كل ما وراء الفاصلة, يعني لو الساعة 6 و النصف ستقول لنا بأن الساعة 6 هو في الحالتين الرقمين تقريبيين للساعة السادسة و النصف, لكنني أرى أنه من الأفضل أن تكون الساعة منقوصة على أن تكون زائدة لأنه عند تحويل التاريخ 06:30 من الأرقام الى الساعات مثلاً سنكتب: مضت 6 ساعات, و فعلا صحيح فقد مرت 6 ساعات و لكن إذا قلنا مضت 7 ساعات, فهذا خطأ لأنه 7 ساعات لم تمضي بعد هذا من جهة. من جهة أخرى هناك خطأ ثاني وهو عرض الرقم 60 أو 24 إفحص ساعتك الرقمية أو ساعة حاسوبك و اضبطها على 23:59:56 مثلاً و انظر ما سيحصل.! لن يتم عرض الرقم 60 سواء في الدقائق أو الثواني و كذلك الرقم 24 في الساعات , و بمجرد تصل الدقائق أو الثواني الى 59 الرقم الموالي يكون 00 و تبدأ العد من جديد في حين يذهب رقم 1 الى الساعات او الدقائق فلهذا أظن أن عرض الرقم 60 أو 24 هو كذلك خطأ تم تصحيح الدالة و أعرضها أمامكم ملاحظة: الدالة تحول فقط 24 ساعة يعني بعد 24 ساعة سيظهر الوقت كما هو. يمكن التعديل عليها بسهولة و اضافة الاشهر او الايام و السنوات, لأنني لا أعتقد أنها مهمة أزلتها. function timeBetween($start,$end = null){ $end = (is_null($end)) ? time() : $end; $time = $end - $start; if($time <= 60){ if($time <= 1){ return 'منذ ثانية واحدة'; } if($time <= 2){ return 'منذ ثانيتين'; } if($time <= 10){ return 'منذ '.$time.' ثواني'; } if($time <= 59){ return 'منذ '.$time.' ثانية'; } if($time <= 60){ return 'منذ دقيقة واحدة'; } } if(60 < $time && $time <= 3600){ $r = intval($time/60); if($r <= 1){ return 'منذ دقيقة واحدة'; } if($r <= 2){ return 'منذ دقيقتين'; } if($r <= 10){ return 'منذ '.$r.' دقائق'; } if($r <= 59){ return 'منذ '.$r.' دقيقة'; } if($r <= 60){ return 'منذ ساعة واحدة'; } } if(3600 < $time && $time <= 86400){ $r = intval($time/3600); if($r <= 1){ return 'منذ ساعة واحدة'; } if($r <= 2){ return 'منذ ساعتين'; } if($r <= 10){ return 'منذ '.$r.' ساعات'; } if($r <= 23){ return 'منذ '.$r.' ساعة'; } if($r <= 24){ return 'منذ يوم أمس'; } } if($time > 86400){ return date('M d y \a\t h:i A',$start); } } إن أحسنت فمن الله ، وإن أسأت أو أخطأت فمن نفسي والشيطان اللهم انفعني بما علمتني وعلمني ما ينفعني وزدني علما
3 إجابات
دالة رائعة وتطوير جميل
شكراً لك بواسطة: Eisa.Ahmed 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا
أشير كذلك إلى أنه لا يجب استعمال الدالة
getdate($t);مع الوقت و الاكتفاء بها فقط في التاريخ لأنها تعرض لنا الوقت عند منتصف الليل هكذا 0:0 لذلك يفضل استعمال الدالة date("H:i",$start); حتى نحصل على التاريخ عند منتصف الليل 00:00 هذا و الله أعلم بواسطة: Imad 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا مشكور على المعلومة
يوجد كذلك خطأ هنا
ترجمة دالة date الى العربية مثال الاستعمال ليس echo date_arabic("D j M ،Y",time());و إنما $timenow = time(); echo date_arabic($timenow); بواسطة: Imad 2 من 2 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا |
تم الاستبدال
23 / يناير / 2012 الساعة 12:42
اضافات اكثر من رائعة
23 / يناير / 2012 الساعة 22:3