[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с датой, как подсчитать количество месяцев
Kuliev
Доброго времени суток всем.

Как подсчитать количество месяцев за определенный период, скажем с 08.11.2011 по 08.11.2012 ???

Цитата
поторопился  huh.gif




Спустя 8 минут, 13 секунд (8.11.2011 - 13:55) m4a1fox написал(а):
Ну если банально - то отнимать!

Цитата
Как подсчитать количество месяцев за определенный период, скажем с 08.11.2011 по 08.11.2011 ???

Да тут вроде как бы и 0 месяцев! :huh:

Даж. не знаю!
$date1 = "2011-08-01";

function dat($d1, $d2){
$ex1 = explode("-", $d1);
$ex2 = explode("-", $d2);
return $ex2[1] - $ex1[1];
}

echo dat($date1, date("Y-m-d"));

Спустя 14 минут, 36 секунд (8.11.2011 - 14:09) Kuliev написал(а):
Цитата (m4a1fox @ 8.11.2011 - 14:55)
Ну если банально - то отнимать!

Цитата
Как подсчитать количество месяцев за определенный период, скажем с 08.11.2011 по 08.11.2011 ???

Да тут вроде как бы и 0 месяцев! :huh:

Даж. не знаю!
$date1 = "2011-08-01";

function dat($d1, $d2){
$ex1 = explode("-", $d1);
$ex2 = explode("-", $d2);
return $ex2[1] - $ex1[1];
}

echo dat($date1, date("Y-m-d"));

biggrin.gif
Не так не пойдет, период не обязательно один год, он может быть сколь угодно.
Тут более тонкое решение нужно!

Спустя 7 минут, 42 секунды (8.11.2011 - 14:17) m4a1fox написал(а):
Kuliev
Цитата
Не так не пойдет, период не обязательно один год, он может быть сколь угодно.
Тут более тонкое решение нужно!

Эво как! Нужно тонко-тонко!

Спустя 9 минут, 2 секунды (8.11.2011 - 14:26) Kuliev написал(а):
Есть мыля перевести все в timestamp а потом подсчитать, но может есть какое-то другое решение?

Спустя 12 минут, 18 секунд (8.11.2011 - 14:38) m4a1fox написал(а):
Kuliev
Как вариант! Торопился очень так что
$time1 = time();
$time2 = mktime(0, 0, 0, 1, 1, 1998);
$true1 = ceil($time1/2419200);
$true2 = ceil($time2/2419200);
echo $true1-$true2;

Спустя 1 минута, 47 секунд (8.11.2011 - 14:40) m4a1fox написал(а):
:rolleyes:
echo ceil(time()/2419200)-ceil(mktime(0, 0, 0, 1, 1, 1998)/2419200);

Спустя 23 минуты, 14 секунд (8.11.2011 - 15:03) Winston написал(а):
$start = $month = strtotime('08.11.2011');
$end = strtotime('08.11.2012');
$count = 0;
while($month < $end)
{
echo date('F Y', $month), PHP_EOL;
$month = strtotime("+1 month", $month);
echo '<br/>';
++
$count;
}
echo $count;

Спустя 1 минута, 27 секунд (8.11.2011 - 15:05) linker написал(а):
date_diff() и оно же DateTime::diff()
http://ru.php.net/manual/en/function.date-diff.php

Спустя 2 минуты, 13 секунд (8.11.2011 - 15:07) Winston написал(а):
linker
Цитата (linker @ 8.11.2011 - 14:05)
date_diff() и оно же DateTime::diff()

Да я тоже пробовал, но там не получается вернуть общее количество месяцев за год или несколько лет.
$datetime1 = date_create('2011-08-11');
$datetime2 = date_create('2012-08-11');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%y - year; %m - month; %d - day;');

Спустя 5 минут, 25 секунд (8.11.2011 - 15:13) m4a1fox написал(а):
linker
О как! Спасибо! Надо запомнить!

Спустя 26 секунд (8.11.2011 - 15:13) Kuliev написал(а):
Цитата (linker @ 8.11.2011 - 16:05)
date_diff() и оно же DateTime::diff()
http://ru.php.net/manual/en/function.date-diff.php

date_diff

(PHP 5 >= 5.3.0)

А у меня 5.2

Спустя 2 минуты, 7 секунд (8.11.2011 - 15:15) m4a1fox написал(а):
Winston
А зачем за год возвращать! Находим общее кол-во месяце в начала ЭПОХИ! smile.gif Вычисляем time в секундах, после делим на кол-во секунд в месяце - имеем кол-во месяце с начала ЭПОХИ! smile.gif Потом процесс повторяется только с учетом тог, что время в секундах ищем от точки кот. задает пользователь, делим и получаем кол-во месяце. После отнимаем и вот!

Спустя 6 минут, 47 секунд (8.11.2011 - 15:22) linker написал(а):
Ну я только предложил.

Спустя 13 минут, 57 секунд (8.11.2011 - 15:36) Kuliev написал(а):
Спасибо всем за обсуждение, буду думать!!!

Спустя 2 часа, 29 минут, 39 секунд (8.11.2011 - 18:05) alexbel2404 написал(а):
Цитата (m4a1fox @ 8.11.2011 - 16:15)
Winston
А зачем за год возвращать! Находим общее кол-во месяце в начала ЭПОХИ! smile.gif Вычисляем time в секундах, после делим на кол-во секунд в месяце - имеем кол-во месяце с начала ЭПОХИ! smile.gif Потом процесс повторяется только с учетом тог, что время в секундах ищем от точки кот. задает пользователь, делим и получаем кол-во месяце. После отнимаем и вот!

над точностью задумывался?) допустим если интервал будет очень большой?)

Спустя 1 час, 38 минут, 1 секунда (8.11.2011 - 19:43) dadli написал(а):
Kuliev
может бить так ?

$odin = "08.11.2011";
$dva = "08.11.2012";

$odin = substr($odin,6).substr($odin,3,2);
$dva = substr($dva,6).substr($dva,3,2);



$res = mysql_query("SELECT PERIOD_DIFF(".$dva.",".$odin.") ",$db);
$row = mysql_fetch_row($res);
echo $row[0];

Спустя 6 дней, 18 часов, 13 минут, 29 секунд (15.11.2011 - 13:57) Kuliev написал(а):
В общем вот решение моей задачи, может кому пригодится в дальнейшем.

Все оказалось гораздо проще :P


<?php
$dt1 = strtotime('15.11.2010');
$dt2 = strtotime('15.12.2012');
$diff = $dt2-$dt1;
echo floor($diff/(30*60*60*24));
?>

Спустя 19 минут, 1 секунда (15.11.2011 - 14:16) m4a1fox написал(а):
Все- легче реально оказалось! Только у меня вопрос! Вы все переумножали... но что? Дни часы минуты?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.