IgoX
Новичок
разность timestamp
Добрый день.
Не могу понять что делаю не так. Я из mssql вытаскиваю даты и хочу найти их разницу.
Почему после конвертации дат в timestamp и деления на 86400 я получаю дробное число если и одна и другая дата имеет одинаковое время 12:00AM и некоторые даты при делении равны целым числам а некоторые дробным.
Вариант делать разницу в SQL не предлагайте.
Результат:
Nov 07 2009 12:00AM(1257541200)-Nov 01 2009 12:00AM(1257022800)=6
Oct 13 2009 12:00AM(1255377600)-Sep 30 2009 12:00AM(1254254400)=13
Oct 31 2009 12:00AM(1256936400)-Oct 20 2009 12:00AM(1255982400)=11.041666666667
Oct 14 2009 12:00AM(1255464000)-Sep 30 2009 12:00AM(1254254400)=14
Oct 31 2009 12:00AM(1256936400)-Oct 21 2009 12:00AM(1256068800)=10.041666666667
Oct 15 2009 12:00AM(1255550400)-Sep 30 2009 12:00AM(1254254400)=15
Nov 07 2009 12:00AM(1257541200)-Oct 22 2009 12:00AM(1256155200)=16.041666666667
Sep 28 2009 12:00AM(1254081600)-Sep 23 2009 12:00AM(1253649600)=5
Добавлю.
Видимо я её(strtotime) как-то неправильно использую так как даже вот такой пример меня убивает:
Результат:
Начало дат начинается с 23.09.09 и после добавления на 25.10.2009 числе получается самое интересное таких чисел 2.
Добрый день.
Не могу понять что делаю не так. Я из mssql вытаскиваю даты и хочу найти их разницу.
Почему после конвертации дат в timestamp и деления на 86400 я получаю дробное число если и одна и другая дата имеет одинаковое время 12:00AM и некоторые даты при делении равны целым числам а некоторые дробным.
Вариант делать разницу в SQL не предлагайте.
PHP:
$secInDay=86400;
.....
function getTD($start, $end) {
global $secInDay;
$delta=((strtotime($end)-strtotime($start))/$secInDay);
if($delta<=0)
return "";
echo $end."(".strtotime($end).")-".$start."(".strtotime($start).")=".$delta."<br>";
return str_repeat ("<td> ".$delta."</td>", $delta);
}
Nov 07 2009 12:00AM(1257541200)-Nov 01 2009 12:00AM(1257022800)=6
Oct 13 2009 12:00AM(1255377600)-Sep 30 2009 12:00AM(1254254400)=13
Oct 31 2009 12:00AM(1256936400)-Oct 20 2009 12:00AM(1255982400)=11.041666666667
Oct 14 2009 12:00AM(1255464000)-Sep 30 2009 12:00AM(1254254400)=14
Oct 31 2009 12:00AM(1256936400)-Oct 21 2009 12:00AM(1256068800)=10.041666666667
Oct 15 2009 12:00AM(1255550400)-Sep 30 2009 12:00AM(1254254400)=15
Nov 07 2009 12:00AM(1257541200)-Oct 22 2009 12:00AM(1256155200)=16.041666666667
Sep 28 2009 12:00AM(1254081600)-Sep 23 2009 12:00AM(1253649600)=5
Добавлю.
Видимо я её(strtotime) как-то неправильно использую так как даже вот такой пример меня убивает:
PHP:
function drawTable($arr, $dateStart, $dateEnd) {
global $secInDay;
$dateStart=strtotime($dateStart);
$dateEnd=strtotime($dateEnd);//+$secInDay;
$table="<table border=1 width=100%><tr><th> </th>";
while($dateStart<=$dateEnd) {
$table.="<th>".date("d.m.Y",$dateStart)."</th>";
$dateStart=$dateStart+$secInDay;
}
....
Начало дат начинается с 23.09.09 и после добавления на 25.10.2009 числе получается самое интересное таких чисел 2.