انجمن عمومی گسترش فناوری آگو
تابع AGO برای نمایش تاریخ به فرمت های مختلف (“چند ساعت پیش”) - نسخه‌ی قابل چاپ

+- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir)
+-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1)
+--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13)
+--- موضوع: تابع AGO برای نمایش تاریخ به فرمت های مختلف (“چند ساعت پیش”) (/showthread.php?tid=2257)



تابع AGO برای نمایش تاریخ به فرمت های مختلف (“چند ساعت پیش”) - agotd - 12-24-2013 03:27 PM

با سلام .

تا بحال شاید دیده باشد تو بعضی از سایت هایی که معمولا هم با سیستم های مدیریت محتوا نوشته شده آخر پستاشون زمان انتشار مطلب را به این صورت نوشته “۵ ساعت پیش” یا “۳۰ روز پیش” یا “۱ قرن پیش” . امروز من سعی کردم تابعی رو که قبلا برا یکی از وب سایت هام نوشته بودم رو یکم تغییر بدم (با قابلیت نمایش به صورت فارسی و انگلیسی) و طرز استفاده رو براتون توضیح بدم .

کد php:
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(160360086400604800263088031570560315705600);
        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 <> && $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 
'-';
    }

حال برای استفاده به این صورت عممل کنید :

کد php:
echo ago(strtotime("-1 day")); 

خروجی : “۲۴ ساعت پیش”

برای تبدیل به انگلیسی:

کد php:
$time=strtotime("-2 day");
echo 
ago($time,'en'); 

خروجی : “۲ days ago”

اگر هم بخواین خروجی عاری از هر نوع تگ html باشده به این صورت عمل کنید

کد php:
$time=strtotime("-2 day");
echo 
ago($time,'fa',false);