2014-10-29 4 views
-1

Я работаю над datetime. Мне нужен возраст между двумя датами. Date1 извлечь из базы данных, а date2 является today.Below это код:Работа с DateTime

while($row= mysqli_fetch_array($query)){ 
    $surname=$row['surname']; 
    $firstname= $row['firstname']; 
    $othername=$row['othername']; 
    $sex= $row['sex']; 
    $regdate= $row['reg_date']; 
} 

то это код для отображения таблицы:

<tr> 
    <td>Years in Service</td> 
    <td><?php 
    $date1 = new DateTime("Y-m-d"); 
    $date2 = new DateTime("$regdate"); 
    $interval = $date1->diff($date2); 
    echo $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 
    ?></td> 
</tr> 
+1

Что такое $ строки [ «reg_date»] ;? Можете ли вы разместить то, что находится в этой переменной? – Naruto

+0

http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php – brandelizer

ответ

-1

Попробуйте это:

$date1 = time(); 
$date2 = strtotime($regdate); 
$diff = abs($date2-$date1); // two timestamps 
echo 'its '.$diff.' seconds!'; 

или:

NICE SOLUTION

+0

Спасибо Brandelizer. Результатом вычисления является длинное значение во втором. Что такое переход на годы? Как 1672508 –

+0

Hä? Разделите его на 60 * 60 * 24 * 365 ??? ... – brandelizer

+0

В чем проблема? – brandelizer

0

Могу я предложить использовать отличный пакет Carbon? Она обеспечивает отличные инструменты для баловаться с DateTimes, в том числе finding the difference месяцы, годы и т.д.

use Carbon\Carbon; 

$now    = Carbon::now(); 
$registrationDate = Carbon::parse($regdate); 

// is the user on their registration anniversary? 
$anniversary = $now->isBirthday($registrationDate); 

// years since registering (rounded down, so 11 months and 30 days = 0 years) 
$years = $now->diffInYears($registrationDate); 
+0

Pls Alexrussell при попытке использования углерода ниже приведена ошибка: Неустранимая ошибка: Класс «Углерод \ Углерод» не найден в C: \ wamp \ www \ medics \ staff_upgrade.php в строке 101. Также , Я хочу, чтобы пользователь мог предоставить дату рождения в поле, а страница вычислила его возраст и отобразила его в следующем поле, все в том же виде. –

+0

Carbon - это сторонняя библиотека, поэтому вы должны импортировать свой код в свой проект. Большинство людей в эти дни будут использовать для этого часть программного обеспечения под названием [Composer] (https://getcomposer.org/) - он будет обрабатывать и устанавливать зависимости и настраивать для вас автозагрузчик классов. Однако, если вы не хотите использовать Composer, вы можете просто получить код Carbon и [загрузить в классе вручную] (https://github.com/briannesbitt/Carbon#install-nocomposer). – alexrussell

+0

Что касается вашего второго вопроса, вы должны действительно опубликовать его как новый вопрос о переполнении стека. Однако, если вам нужно, чтобы вычисления выполнялись в режиме реального времени, вам нужно либо использовать JavaScript для этого, либо использовать AJAX для POST для PHP и получить результат.FWIW Carbon легко позволит вам это сделать (см. Мой код выше, последняя строка), но да, если вам нужно, чтобы все работали на странице, вы должны посмотреть на решение JS на свои проблемы, может быть? Вы найдете [moment.js] (http://momentjs.com/docs/#/displaying/difference/) работает совсем немного, как Carbon, и позволяет это. – alexrussell

Смежные вопросы