آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

محاسبه زمان سپری شده (Human Readable Time)

mohammadrsh  8 سال پیش  7 سال پیش
+11 0

سلام دوستان من تو یکی از پروژه هام به تابعی نیاز داشتم که زمان گذشته از مطلب ارسالی رو محاسبه کنه و بنویسه مثل همین چیزی ک تو انجمن هست و مینویسه مثلا: 1 سال پیش، 30 دقیقه پیش و ...

براتون میزارم اگ نیازتون شد استفاد کنید (تو common.php بندازید :)

*آگ میخاید همه زمان سپری شده رو نشون بده else هارو بردارید

function getTimeElapsed($time) {
$currentTime = getCurrentDateTime();

$time = new DateTime($time);
$currentTime = new DateTime($currentTime);

$interval = $currentTime->diff($time);

$result = "";
if ($interval->y) { $result .= $interval->format("%y سال پیش "); } else
if ($interval->m) { $result .= $interval->format("%m ماه پیش "); } else
if ($interval->d) { $result .= $interval->format("%d روز پیش "); } else
if ($interval->h) { $result .= $interval->format("%h ساعت پیش "); } else
if ($interval->i) { $result .= $interval->format("%i دقیقه پیش "); } else
if ($interval->s) { $result .= $interval->format("%s ثانیه پیش "); }

return $result;

}



+2 0
عالی بود مچکرم (8 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
reza piry ghadim  7 سال پیش
+1 0

با سلام از این دو تابع میتونید استفاده کنید :

تابع اول :

 
 
function time_ago($since) {
$chunks = array(
array(60 * 60 * 24 * 365 , 'سال'),
array(60 * 60 * 24 * 30 , 'ماه'),
array(60 * 60 * 24 * 7, 'هفته'),
array(60 * 60 * 24 , 'روز'),
array(60 * 60 , 'ساعت'),
array(60 , 'دقیقه'),
array(1 , 'ثانیه')
);

for ($i = 0, $j = count($chunks); $i < $j; $i++) {
$seconds = $chunks[$i][0];
$name = $chunks[$i][1];
if (($count = floor($since / $seconds)) != 0) {
break;
}
}

$print = ($count == 1) ? '1 '.$name : "$count {$name}s";
return $print;
}
 

تابع دوم :



function time_ago2 ($time){
$time = time() - $time; // to get the time since that moment
$time = ($time<1)? 1 : $time;
$tokens = array (
31536000 => 'سال',
2592000 => 'ماه',
604800 => 'هفته',
86400 => 'روز',
3600 => 'ساعت',
60 => 'دقیقه',
1 => 'ثانیه'
);
foreach ($tokens as $unit => $text) {
if ($time < $unit){
continue;
}
$numberOfUnits = floor($time / $unit);
return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
}
}
 

موفق باشید .

0 0
اشتباهی پاسخ تاپیک لینک رو اینجا دادم . (7 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .