Benim PHP zaman fark fonksiyonu geliştirilebilir?

1 Cevap php

Aşağıda bir zaman damgası alabilir ve size 23 days 3 hours 4 minutes 6 seconds biçiminde artık geçti zaman anlatacağım benim işlevi olduğunu

Asıl sorun, benim sitede yüzden ben bir zaman damgası mysql benim datetime dönüştürmek ve sonra benim işlevi aracılığıyla çalıştırmak gerekir, bu işlevi kullanmak için mysql'in DATETIME yerine ZAMAN kullanmaktır.

Ben merak ediyorum, bunu yapmak için daha iyi bir yolu ben 100 mysql sonuçları bazı sayfalarda, PHP damgaları 100 tarihleri ​​dönüştürmek gerekir ve daha sonra 100 tanesi bu çalıştırmak var.

Ben daha iyi bir performans yöntem varsa sadece merak ediyorum, ve (vb zend) tüm PHP çerçeveleri tavsiye etmeyiniz

Herhangi bir ipucu / yardım ederiz

function duration($timestamp) {
    $years = floor($timestamp / (60 * 60 * 24 * 365));
    $timestamp %= 60 * 60 * 24 * 365;
    $weeks = floor($timestamp / (60 * 60 * 24 * 7));
    $timestamp %= 60 * 60 * 24 * 7;
    $days = floor($timestamp / (60 * 60 * 24));
    $timestamp %= 60 * 60 * 24;
    $hrs = floor($timestamp / (60 * 60));
    $timestamp %= 60 * 60;
    $mins = floor($timestamp / 60);
    $secs = $timestamp % 60;
    $str = "";
    if ($years == 1) {
    	$str .= "{$years} year ";
    }elseif ($years > 1) {
    	$str .= "{$years} yearss ";
    }
    if ($weeks == 1) {
    	$str .= "{$weeks} week ";
    }elseif ($weeks > 1) {
    	$str .= "{$weeks} weeks ";
    }	
    if ($days == 1) {
    	$str .= "{$days} day ";
    }elseif ($days > 1) {
    	$str .= "{$days} days ";
    }
    if ($hrs == 1) {
    	$str .= "{$hrs} hour ";
    }elseif ($hrs > 1) {
    	$str .= "{$hrs} hours ";
    }
    if ($mins == 1) {
    	$str .= "{$mins} minute ";
    }elseif ($mins > 1) {
    	$str .= "{$mins} minutes ";
    }
    if ($mins < 1 && $secs >= 1) {
    	$str .= "{$secs} seconds ";
    }
    return $str;
}

1 Cevap

the PHP site de time fonksiyonu için belgelerine bakmak yok. Özel olarak this ve this.

Burada bir parçacık by Aidan Lister ki benzer olduğunu:

/**
 * A function for making time periods readable
 *
 * @author      Aidan Lister <aidan@php.net>
 * @version     2.0.0
 * @link        http://aidanlister.com/2004/04/making-time-periods-readable/
 * @param       int     number of seconds elapsed
 * @param       string  which time periods to display
 * @param       bool    whether to show zero time periods
 */
function time_duration($seconds, $use = null, $zeros = false)
{
    // Define time periods
    $periods = array (
        'years'     => 31556926,
        'Months'    => 2629743,
        'weeks'     => 604800,
        'days'      => 86400,
        'hours'     => 3600,
        'minutes'   => 60,
        'seconds'   => 1
        );

    // Break into periods
    $seconds = (float) $seconds;
    foreach ($periods as $period => $value) {
        if ($use && strpos($use, $period[0]) === false) {
            continue;
        }
        $count = floor($seconds / $value);
        if ($count == 0 && !$zeros) {
            continue;
        }
        $segments[strtolower($period)] = $count;
        $seconds = $seconds % $value;
    }

    // Build the string
    foreach ($segments as $key => $value) {
        $segment_name = substr($key, 0, -1);
        $segment = $value . ' ' . $segment_name;
        if ($value != 1) {
            $segment .= 's';
        }
        $array[] = $segment;
    }

    $str = implode(', ', $array);
    return $str;
}