2017-03-08 21 views
1

我有這段代碼,因爲您可以看到我的語言有點不同,只需添加'S部分Guess it's something here?s當我發現這個代碼片段時,它確實發生了,所以在這個時候我會陷入困境。日期時間流逝更改名稱時更改字符串時,前小時到數小時

$string = array(
    'y' => 'år', 
    'm' => 'månad', // månader 
    'w' => 'vecka', // veckor 
    'd' => 'dag', // dagar 
    'h' => 'timme', // timmar 
    'i' => 'minut', // minuter 
    's' => 'sekund', // sekunder 
); 
foreach ($string as $k => &$v) { 
    if ($diff->$k) { 
     $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 'Guess it's somthing here ?' : ''); 
    } else { 
     unset($string[$k]); 
    } 
} 

FULL代碼在這裏

function time_elapsed_string($datetime, $level = 7) { 

$now = new DateTime; 
$ago = new DateTime($datetime); 
$diff = $now->diff($ago); 

$diff->w = floor($diff->d/7); 
$diff->d -= $diff->w * 7; 

$string = array(
    'y' => 'år', 
    'm' => 'månader', 
    'w' => 'veckor', 
    'd' => 'dagar', 
    'h' => 'timme', 
    'i' => 'minuter', 
    's' => 'sekunder', 
); 
foreach ($string as $k => &$v) { 
    if ($diff->$k) { 
     $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : ''); 
    } else { 
     unset($string[$k]); 
    } 
} 

$string = array_slice($string, 0, $level); 
return $string ? implode(', ', $string) . ' ago' : 'just now'; 

}

+0

@prakashtank這只是爲了說明,請參見完整的代碼......他只是把「猜猜它是財產以後在這裏嗎?」詢問.... – codtex

+0

通過添加第二個字符串與彎曲的形式可以作爲一種方法? 我的輸出是這個時刻:'1 vecka,22 timmetimmar,4 minutminuter,'using string 2'($ diff - > $ k> 1?$ string2 [$ k]:'')' – chrjoh88

+0

您的函數正在工作很好''time_elapsed_string('2017-03-07')'會輸出'1達格爾,12時間,24小時,17秒前'。這不夠嗎? – codtex

回答

0

我知道了也沒工作,改進使用未來的日期。如果任何人在非英語網站上使用它,並且有很多彎曲的地方,那麼這裏是代碼。

而不是完整的日期,您可以更改爲time_elapsed_string(日期,2)=年份月份。

function time_elapsed_string($datetime, $level = 7) { 
$now = new DateTime; 
$ago = new DateTime($datetime); 
$diff = $now->diff($ago); 

$diff->w = floor($diff->d/7); 
$diff->d -= $diff->w * 7; 

$string = array(
    'y' => 'år',   // year 
    'm' => 'månad',  // month 
    'w' => 'vecka',  // week 
    'd' => 'dag',   // day 
    'h' => 'timme',  // hour 
    'i' => 'minut',  // minute 
    's' => 'sekund',  // second 
); 
$string2 = array(
    'y' => 'år',   // year 
    'm' => 'månader',  // months 
    'w' => 'veckor',  // weeks 
    'd' => 'dagar',  // days 
    'h' => 'timmar',  // hours 
    'i' => 'minuter',  // minutes 
    's' => 'sekunder',  // seconds 
); 

foreach ($string as $k => &$v) { 
    if ($diff->$k) { 
     $v = $diff->$k . ' ' . ($v =$diff->$k > 1 ? $string2[$k] : ''); 
    } else { 
     unset($string[$k]); 
    } 
} 
// ago, to, just now 
string = array_slice($string, 0, $level); 
return $string ? implode(', ', $string) . ($diff->invert ? ' sen' : ' tills') : ' precis nu'; 

}