بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
محاسبه زمان سپری شده (Human Readable Time)
سلام دوستان من تو یکی از پروژه هام به تابعی نیاز داشتم که زمان گذشته از مطلب ارسالی رو محاسبه کنه و بنویسه مثل همین چیزی ک تو انجمن هست و مینویسه مثلا: 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':'');
}
}
موفق باشید .
اشتباهی پاسخ تاپیک لینک رو اینجا دادم . (7 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .