2012-04-17 26 views
0

我有一個MySql日期時間值,如「2012-04-17 20:48:29」。我想將其轉換爲「10天前」之類的簡單文本。我想要在PHP或JavaScript中做到這一點!我試圖創建我自己的算法來做到這一點。但是,有沒有可用的解決方案?將mysql日期時間轉換爲簡單文本

回答

1

,你可以使用這個模式

$date = "2012-04-17 20:48:29"; 

$seconds = time() - strtotime($date); 
$days = floor($seconds/86400); 
$seconds -= $days * 86400; 
$hours = floor($seconds/3600); 
$seconds -= $hours * 3600; 
$minutes = floor($seconds/60); 
$seconds -= $minutes * 60; 

echo "$days days, $hours hours, $minutes minutes, $seconds seconds ago"; 

你當然應該呼應的結果之前添加一些條件。僅顯示1分鐘前,或3小時前,或在10天前...

0

使用PHP,您可以撥打strftime以獲得不同的輸出。查看here瞭解更多詳情。

還有一個jQuery插件,你可以看看還有:jQuery-dateFormat

玩得開心!

0

我用這個函數:

function duration($integer) 
{ 

    $seconds=$integer; 
    $minutes = 0; 
    $hours = 0; 
    $days = 0; 
    $weeks = 0; 
    $return = ""; 
    if ($seconds/60 >=1) 

    { 

    $minutes=floor($seconds/60); 

    if ($minutes/60 >= 1) 

    { # Hours 

    $hours=floor($minutes/60); 

    if ($hours/24 >= 1) 

    { #days 

    $days=floor($hours/24); 

    if ($days/7 >=1) 

    { #weeks 

    $weeks=floor($days/7); 

    if ($weeks>=2) $return="$weeks Weeks"; 

    else $return="$weeks Week"; 

    } #end of weeks 

    $days=$days-(floor($days/7))*7; 

    if ($weeks>=1 && $days >=1) $return="$return, "; 

    if ($days >=2) $return="$return $days days"; 

    if ($days ==1) $return="$return $days day"; 

    } #end of days 

    $hours=$hours-(floor($hours/24))*24; 

    if ($days>=1 && $hours >=1) $return="$return, "; 

    if ($hours >=2) $return="$return $hours hours"; 

    if ($hours ==1) $return="$return $hours hour"; 

    } #end of Hours 

    $minutes=$minutes-(floor($minutes/60))*60; 

    if ($hours>=1 && $minutes >=1) $return="$return, "; 

    if ($minutes >=2) $return="$return $minutes minutes"; 

    if ($minutes ==1) $return="$return $minutes minute"; 

    } #end of minutes 

    $seconds=$integer-(floor($integer/60))*60; 

    if ($minutes>=1 && $seconds >=1) $return="$return, "; 

    if ($seconds >=2) $return="$return $seconds seconds"; 

    if ($seconds ==1) $return="$return $seconds second"; 

    $return="$return."; 

    return $return; 

} 

echo duration(time() - strtotime($date)); 
1

有了這個功能,你會得到這樣的輸出:

  • 1分鐘
  • 5分鐘
  • 15小時
  • 4天
  • 2個月
  • 1.5年

function time_ago_in_words($time) { 
    $from_time = strtotime($time); 

    $to_time = strtotime(gmd()); 
    $distance_in_minutes = round((($to_time - $from_time))/60); 

    if ($distance_in_minutes < 0) 
    return (string)$distance_in_minutes.'E'; 

    if (between($distance_in_minutes, 0, 1)) 
    return '1 minute'; 

    elseif (between($distance_in_minutes, 2, 44)) 
    return $distance_in_minutes.' minutes'; 

    elseif (between($distance_in_minutes, 45, 89)) 
    return '1 hour'; 

    elseif (between($distance_in_minutes, 90, 1439)) 
    return round($distance_in_minutes/60).' hours'; 

    elseif (between($distance_in_minutes, 1440, 2879)) 
    return '1 day'; 

    elseif (between($distance_in_minutes, 2880, 43199)) 
    return round($distance_in_minutes/1440).' days'; 

    elseif (between($distance_in_minutes, 43200, 86399)) 
    return '1 month'; 

    elseif (between($distance_in_minutes, 86400, 525959)) 
    return round($distance_in_minutes/43200).' months'; 

    elseif ($distance_in_minutes > 525959) 
    return number_format(round(($distance_in_minutes/525960), 1), 1).' years'; 
} 

所以,你可以這樣做:

// Last time you logged in: 15 days ago. 
Last time you logged in: <?php echo time_ago_in_words($user['last_logged_in']) ?> ago. 
// We haven't seen you for 15 days! 
We haven't seen you for <?php echo time_ago_in_words($user['last_logged_in']) ?>! 
相關問題