Я пытаюсь преобразовать мой уже внедренный формат даты:
$dateEntered = date('mdY');
в относительное время, используя эту функцию:
function RelativeTime($dateEntered)
Теперь фактический скрипт, который выполняет всеэто выглядит так:
<?php
function RelativeTime($dateEntered){
$difference = time() - $dateEntered;
$periods = array("sec", "min", "hour", "day", "week",
"month", "years", "decade");
$lengths = array("60","60","24","7","4.35","12","10");
if ($difference > 0) { // this was in the past
$ending = "ago";
} else { // this was in the future
$difference = -$difference;
$ending = "to go";
}
for($j = 0; array_key_exists($j,$lengths)&&$difference >= $lengths[$j]; $j++) {
$difference /= $lengths[$j];
$difference = round($difference);
if($difference != 1) $periods[$j].= "s";
$text = "$difference $periods[$j] $ending";
return $text;
}
}
// Check Service Call Status & Mail if found Unpaid
$query = "SELECT id, account, status, dateEntered FROM service WHERE status = 'Unpaid'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_row($result)){
$account = $row[1];
$status = $row[2];
$dateEntered = $row[3];
$timeToSend = RelativeTime(strtotime($dateEntered));
// mailStatusUpdate($account, $status, $timeToSend);
}
?>
Если я запускаю сценарий, я получаю возвращение «4 десятилетия назад».
У меня есть служебная таблица с одной записью.Переменная $ dateEntered возвращает:
01302012
Это показано в выводе print_r
ниже.Я в основном хочу, чтобы это говорило «х дней назад» или что бы это ни было.
Вместо того, чтобы возвращать правильную информацию (например, x дней назад), он возвращает:
4 decades ago
Очевидно, что это неправильно.Вот строка печати, поэтому вы видите, с чем я работаю:
Array ( [0] => 26 [1] => Example Client [2] => Unpaid [3] => 01302012 ) 1
(хотя я не знаю, что это за "1
" в конце.)