CbCoder (28 Сентябрь 2012 - 09:45) писал:
Разницу дат нельзя посчитать простым вычитанием, т.к. дата в php - это обычная строка. Для начала необходимо перевести обе даты в формат
unixtime, затем собственно вычислить разницу в секундах, после чего перевести секунды в нужные единицы.
касательно разницы дат
как получать целое число дней?
если через Unix time
то получится что между 11.11.12 23:59 и 12.11.12 07:59 разница будет примерно 0,3 суток ()
кстати такая же ерунда будет если сравнить разницу между 12.11.12 8:00 и 12.11.12 16:00
или я не прав?
а как сделать так чтобы всегда 12.11.12 минус 11.11.12 было равно 1, а 12.11.12 минус 12.11.12 всегда было равно 0. И не важно какое время 00:00 или 23:59 у каждой даты.
я тупо сделал округление в меньшую сторону (floor), но если я вчера поздно проверю дату и запишу данные, а сегодня рано проверю то ничего не сработает.
//получение максимальной даты в таблице
$sqlQuery = "SELECT max(`f1495`) AS maximumdate FROM `".DATA_TABLE."122` WHERE `status`<>'2'";
$result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR);
$row = mysql_fetch_assoc($result);
//echo "<script>alert('Максимальная дата в таблице ".$row['maximumdate']."')</script>";
$dol=$row['maximumdate'];
//echo "<script>alert('Unix дата".$dol."')</script>";
$todaydate=date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
//echo "<script>alert('Сегодня дата".$todaydate."')</script>";
//Разница дат в UNIX формате деленное на количеаство секунд в прошедших сутках
$differencedate=(strtotime($todaydate)-strtotime($dol))/3600/24;
//Округление даты до целого количества дней - [u][b]вот здесь и будет то несоответствие о котором я писал вышел[/b][/u]
$differencedate2=floor($differencedate);
//цикл для пересчета даты с последней в базе до текущей
for ($i = 1; $i <= $differencedate2 ; $i++) {
$sleddate=date("d/m/y",(strtotime($dol)+($i*3600*24)));
echo "<script>alert('".$sleddate."')</script>";
}