|
|
|
|
|
для: streloc
(04.08.2008 в 11:24)
| | Искал на форуме готовое решение данной задачи, идей много, но все не то.
Вот что сделал:
<?php
// Перевод времени;
function days($time1, $time2 = false) {
// Если конечная дата не указана, то используем текущую;
if (!$time2) $time2 = time();
// Начальные данные;
$t['year'] = 0;
$t['month'] = 0;
$t['days'] = floor(abs($time1-$time2)/86400);
// Находим меньшую дату и количество дней в месяце;
$time = min($time1,$time2);
$count = date('t',$time);
// Обход массива;
while (true) {
// Если остаток дней меньше количества дней в месяце;
if ($t['days'] < $count) break;
// Добавляем год;
if ($t['month']==12) {
$t['month'] = 0;
$t['year'] = $t['year'] + 1;
}
// Добавляем месяц;
$t['month'] = $t['month'] + 1;
// Уменьшаем остаток дней;
$t['days'] = $t['days'] - $count;
$time = mktime(0, 0, 0, date('m',$time), date('d',$time)+$count, date('Y',$time));
$count = date('t',$time);
}
// Вывод данных;
return $t;
}
?>
|
Использовать можно так:
<?php
// $date = 1236680683;
days($date);
// $date = '2009-11-03 10:00:00';
days(strtotime($date));
?>
|
Что скажут умельцы? | |
|
|
|
|
|
|
|
для: mehelson
(04.08.2008 в 11:55)
| | Описался. Спасибо всем | |
|
|
|
|
|
|
|
для: elenaki
(04.08.2008 в 11:53)
| | ну это да | |
|
|
|
|
|
|
|
для: mehelson
(04.08.2008 в 11:51)
| | все равно вычесть, а не сложить | |
|
|
|
|
|
|
|
для: elenaki
(04.08.2008 в 11:33)
| | а если так :
<?php
$razn = (mktime(0, 0, 0, 01, 10, 2008) - mktime(0, 0, 0, 02, 05, 2008))/86400;
echo $razn." дней";
?>
|
или если так как у вас даты :
<?php
$razn = (mktime(0, 0, 0, 10, 01, 2008) - mktime(0, 0, 0, 05, 02, 2008))/86400;
echo $razn." дней";
?>
|
| |
|
|
|
|
|
|
|
для: streloc
(04.08.2008 в 11:24)
| | только не сложить, а отнять
<?
function date_to_timestamp($dt) {
$yr=strval(substr($dt,6,4));
$mo=strval(substr($dt,3,2));
$da=strval(substr($dt,0,2));
$hr=strval(substr($dt,0,0));
$mi=strval(substr($dt,0,0));
$se=strval(substr($dt,0,0));
return mktime(0,0,0,$mo,$da,$yr);
}
echo "01-10-2008: ".date_to_timestamp("01-10-2008");
echo "<br><br>";
echo "02-05-2008: ".date_to_timestamp("02-05-2008");
echo "<br><br>";
echo date_to_timestamp("01-10-2008")-date_to_timestamp("02-05-2008");
$razn = date_to_timestamp("01-10-2008")-date_to_timestamp("02-05-2008");
echo "<br><br>";
echo $razn/86400;
?>
|
| |
|
|
|
|
|
|
| есть
2008-01-10
2008-02-05
надо получить количество дней | |
|
|
|
|