mysqlクエリから取得した「14/11/20124:26:10PM」の形式の日付があります。
PHPの経験はあまりありませんが、日付「Then」と「Now」の間の単純な期間を計算するにはどうすればよいですか?
そして、それを人間が読める文字列にフォーマットしますか?たとえば...「1時間5分前」。
解決策を探してみましたが、うまくいったと思ったのですが、AM / PMが考慮されていなかったため、タイムスタンプに変換すると問題が発生しました。誰かが何か考えを持っていますか?
これは私がやろうとしていることですが、これはあまりうまくいきません:
$time = $row["NotificationSent"];
list($day, $month, $year, $hour, $minute) = split('[/ :]', $time);
$timestamp = mktime($hour, $minute,0, $month, $day, $year);
$j = TimeSince($timestamp);
私が使用しているグーグルから見つけたtimesince関数は次のとおりです。
function TimeSince($original) // $original should be the original date and time in Unix format
{
// Common time periods as an array of arrays
$periods = array(
array(60 * 60 * 24 * 365 , 'year'),
array(60 * 60 * 24 * 30 , 'month'),
array(60 * 60 * 24 * 7, 'week'),
array(60 * 60 * 24 , 'day'),
array(60 * 60 , 'hour'),
array(60 , 'minute'),
);
$today = time();
$since = $today - $original; // Find the difference of time between now and the past
// Loop around the periods, starting with the biggest
for ($i = 0, $j = count($periods); $i < $j; $i++)
{
$seconds = $periods[$i][0];
$name = $periods[$i][1];
// Find the biggest whole period
if (($count = floor($since / $seconds)) != 0)
{
break;
}
}
$output = ($count == 1) ? '1 '.$name : "$count {$name}s";
if ($i + 1 < $j)
{
// Retrieving the second relevant period
$seconds2 = $periods[$i + 1][0];
$name2 = $periods[$i + 1][1];
// Only show it if it's greater than 0
if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0)
{
$output .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s";
}
}
return $output;
}
返された結果は、私が探しているものにフォーマットされていますが、間違った数値を示しています。「19/11/20122:48:53PM」は「1日5時間」を返しますが、「17時間32分」である必要があります
どんな助けでも大歓迎です。