如何获得时间跨度值Codeigniter

时间:2015-10-02 01:18:56

标签: php codeigniter timestamp unix-timestamp timespan

我正在尝试从Code Igniter中的timespan()函数中获取值。我有一个问题,我怎么知道是否显示每种日期格式?例如,对于下面的代码,一个时间跨度可能是2 Months, 6 Days, 13 Hours, 14 Minutes,其中有4个元素,而另一个可能是2 Months, 1 Week, 3 Days, 4 Hours, 39 Minutes,其中有5个元素。如果preg_replace那么我将不知道哪些是月,周或日等。

那我该怎么知道它是一周,几天或几小时等?因为我希望将值转换为像39mins/1440mins这样的周期为0.0270833天,然后我将计算几个月和几年的小时数,并将它们全部加在一起

// Hold Cycle Time Conversion

foreach($results as $key => $values)
{
    // Convert mysql timestamp to unix
    $remove = array('-', ':', ' ');
    $hold_timestamp = mysql_to_unix( str_replace( $remove, '', $values['hold_date'] ) );

    // Get timespan
    $hold_timestamp = timespan($hold_timestamp);

    // Explode into arrays
    $timestamp_format = explode(',', $hold_timestamp);

    // Check each array to get value
    foreach($timestamp_format as $ts)
    {
        $separated_stamp = preg_replace('/[^0-9]/', '', $ts);

        /*** Stuck here, incomplete ***/
    }

}

1 个答案:

答案 0 :(得分:0)

我决定放弃那个逻辑并改用PHP Date Time class。得到this post的帮助。不确定这是不是最好的方式,但这是我发现的。

// Hold Cycle Time Conversion

foreach($results as $key => $values)
{
    // Declare timestamps
    $last = new DateTime( $values['hold_date'] );
    $now = new DateTime( date( 'Y-m-d h:i:s', time() )) ; 

    // Find difference
    $interval = $last->diff($now);

    // Store in variable to be used for calculation etc
    $years = (int)$interval->format('%Y');
    $months = (int)$interval->format('%m');
    $days = (int)$interval->format('%d');
    $hours = (int)$interval->format('%H');
    $minutes = (int)$interval->format('%i');
}