|
تصحيح دالة تحويل التاريخ الى “ساعة,مضت”
من بين الأخطاء الشائعة هي استخدام الدالة 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