[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Функция для дат
gorillaz
Есть ли какая-нибудь функция, которая автоматически считате разницу между датами (и выдает это дело в днях)?!
Дата в виде date("Y-m-d").



Спустя 11 минут, 46 секунд (28.05.2010 - 15:20) Basili4 написал(а):

Function DateDiff ($interval,$date1,$date2)
{
$arrdate1 = explode("-",$date1);
$arrdate2 = explode("-",$date2);
$timestamp2 = (mktime(0, 0, 0, $arrdate2[1], $arrdate2[0], $arrdate2[2]));
$timestamp1 = (mktime(0,0, 0, $arrdate1[1], $arrdate1[0], $arrdate1[2]));

switch($interval)
{
case "d": return floor(($timestamp2 - $timestamp1)/86400);
case "w": return floor(($timestamp2 - $timestamp1)/(604800));
case "m": return ($arrdate2[2]-$arrdate1[2])*12+($arrdate2[1]-$arrdate1[1]);
}
}



С тебя + в карму :-)

Спустя 1 минута, 22 секунды (28.05.2010 - 15:21) DedMorozzz написал(а):
А если это не то, что надо а нужно проще, то минус?
Цитата
Разницу в днях между двумя датами в формате UNIX timestamp можно сверить, используя такую конструкцию:
код PHP
bcdiv($date1 - $date2, 86400);

Чтобы получить сегодняшнюю дату в UNIX timestamp - можно использовать функцию time();
Чтобы получить UNIX timestamp, можно пойти двумя способами: 1) взвалить это задание на MySQL 2) используя хитрости ПХП. Я бы посоветовал первый вариант т.к. он проще. Для этого:

код SQL

SELECT ..., UNIX_TIMESTAMP(date), ... FROM ...

А в чём получать разницу, выставить в знаменателе.

Спустя 4 минуты, 59 секунд (28.05.2010 - 15:26) Basili4 написал(а):
Можно и проще но зато моя функция универсальная.

Спустя 32 секунды (28.05.2010 - 15:27) DedMorozzz написал(а):
выше написал пример. Отредактировал

Спустя 13 минут, 47 секунд (28.05.2010 - 15:40) gorillaz написал(а):
Fatal error: Cannot redeclare datediff()
Он вот это ошибку выдает!

Спустя 4 минуты, 8 секунд (28.05.2010 - 15:44) Basili4 написал(а):
Есть уже функция datediff

Спустя 11 минут, 32 секунды (28.05.2010 - 15:56) gorillaz написал(а):
Так ладно, я уже без нее сделал)

Спустя 56 минут, 34 секунды (28.05.2010 - 16:53) gorillaz написал(а):
Объясните пожалуйста! Почему после этого кода

$dat=2010-05-13;
$date= 2010-05-28;
$arrdate1 = explode("-",$dat);
$arrdate2 = explode("-",$date);
$timestamp2 = (mktime(0, 0, 0, $arrdate2[1], $arrdate2[2], $arrdate2[1]));
$timestamp1 = (mktime(0,0, 0, $arrdate1[1], $arrdate1[2], $arrdate1[1]));
echo floor(($timestamp2 - $timestamp1)/(86400));

Выводится нормальный результат как идолжен! 15

$dat=2010-03-13;
$date= 2010-05-28;
$arrdate1 = explode("-",$dat);
$arrdate2 = explode("-",$date);
$timestamp2 = (mktime(0, 0, 0, $arrdate2[1], $arrdate2[2], $arrdate2[1]));
$timestamp1 = (mktime(0,0, 0, $arrdate1[1], $arrdate1[2], $arrdate1[1]));
echo floor(($timestamp2 - $timestamp1)/(86400));

А здесь он выводит! 806

Спустя 3 минуты, 57 секунд (28.05.2010 - 16:56) Basili4 написал(а):
Я нверное устал но я невижу в двух кусках кода отличий

Спустя 1 минута, 41 секунда (28.05.2010 - 16:58) DedMorozzz написал(а):
А так:
$dat=2010-05-13;
$date= 2010-05-28;

$dat=2010-03-13;
$date= 2010-05-28;

Спустя 9 минут, 16 секунд (28.05.2010 - 17:07) DedMorozzz написал(а):
не хочет он подсказывать =)
Держи "правильную версию":
$dat="2010-03-13";
$date= "2010-05-28";
$arrdate1 = explode("-",$dat);
$arrdate2 = explode("-",$date);
$timestamp2 = (mktime(0, 0, 0, $arrdate2[1], $arrdate2[2], $arrdate2[0]));
$timestamp1 = (mktime(0,0, 0, $arrdate1[1], $arrdate1[2], $arrdate1[0]));
echo floor(($timestamp2 - $timestamp1)/(86400));

Спустя 20 минут, 14 секунд (28.05.2010 - 17:28) gorillaz написал(а):
DedMorozzz Если отличие только в кавычках, то не то! Эти даты я просто написал, одна у меня из базы берется, а другая -сегодняшняя дата!

Спустя 1 минута, 8 секунд (28.05.2010 - 17:29) gorillaz написал(а):
Сори! Я слепой!

Спустя 3 минуты, 24 секунды (28.05.2010 - 17:32) DedMorozzz написал(а):
С кавычками не будет лишь нотисов. Я в коде исправил ошибку.
Быстрый ответ:

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