2017-03-08 40 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'; 

}