کد php برای نشان دادن زمان مثلا : 1 روز قبل یا 20 دقیقه قبل

+1 رأی
میانگین بازدید روزانه 0.29500 بازدید
من به یک تابع یا کلاس نیاز داشتم که زمان گذشته شده از زمان مورد نظر را به صورتهای زیر نمایش بده:

1 روز قبل

20 دقیقه قبل
سوال 4 سال قبل در تالار برنامه نویسی توسط arman202020 (324 امتیاز)
ویرایش 4 سال قبل توسط Saeed Zarinfam

2 جواب

+2 رأی
 
بهترین جواب

به دو زبان فارسی و انگلیسی هست ساعت سیستم هم باید دقیق باشه .


function ago($tm, $lang = 'fa', $ashtml = true) {
    $local = array('style' => array('fa' => 'style="direction:rtl;"', 
									'en' => 'style="direction:ltr"'), 
									'times' => array(
									    	'fa' => array('ثانیه', 'دقیقه', 'ساعت', 'روز', 'هفته', 'ماه', 'سال', 'دهه'), 
									   	   'en' => array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade')), 
										   'ago' => array('fa' => 'پیش', 'en' => 'ago'));
    if (intval($tm) > 0) {
        $cur_tm = time();
        $dif = $cur_tm - $tm;
        $lngh = array(1, 60, 3600, 86400, 604800, 2630880, 31570560, 315705600);
        for ($v = sizeof($lngh) - 1; ($v >= 0) && (($no = $dif / $lngh[$v]) <= 1); $v--)
            ; if ($v < 0)
            $v = 0; $_tm = $cur_tm - ($dif % $lngh[$v]);
        $no = floor($no);
        if ($no <> 1 && $lang == 'en')
            $local['times'][$lang][$v] .= 's'; $x = sprintf("%d %s ", $no, $local['times'][$lang][$v]);
        if ($ashtml)
            return " " . $x . ' ' . $local['ago'][$lang] . "";
        else
            return $x . ' ' . $local['ago'][$lang];
    } else {
        return '-';
    }
}
  • نکته اگر از الگو مانند MVC  , ... استفاده می کنی درون VIew قرار نده و فایل درون Controller باشه.

استفاده :

     <time  class="entry-date">
                      <?php echo(ago(strtotime($row->dttime))); ?>
                  </time>

نمایی از خروجی :

جواب 4 سال قبل توسط hosseini (1,852 امتیاز)
انتخاب شده در 4 سال قبل توسط arman202020
+2 رأی

کد زیر رو چک کنید. البته برای نیاز خودتون باید تغییرش بدین:


$time = strtotime('2010-04-28 17:25:43');
 
echo elapsedTime($time).' قبل';
 
function elapsedTime($time)
{
 
    $time = time() - $time; // to get the time since that moment
 
    $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);
    }
 
}
جواب 4 سال قبل توسط Saeed Zarinfam (149 امتیاز)

سوال های مشابه

+1 رأی
1 جواب میانگین بازدید روزانه 0.24563 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.531,099 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1205 بازدید
سوال 5 سال قبل در تالار برنامه نویسی توسط maryaam (106 امتیاز)
0 رأی
2 جواب میانگین بازدید روزانه 0.06125 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.561,246 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 3.155,960 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.26541 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.2918 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.1530 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.33435 بازدید
کانال تلگرام جواب یاب
...