[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как узнать сколько времени осталось до даты
Strannik
Здравствуйте

$data1="28-07-2011 05:16";
$data2="21-07-2011 23:16";

Подскажите пожалуйста, как вывести сколько дней часов и минут осталось от даты $data2 до даты $data1 ?
причем:
1)если осталось несколько дней, часов и минут вывести "осталось .. дней .. часов .. минут"
2)если осталось несколько часов и минут вывести "осталось .. часов .. минут"
3)если осталось несколько минут вывести "осталось .. минут"
kovaldm
Используй функции для работы с датой и временем.

Переводишь даты в секунды, вычитаешь из большего меньшее, результат преобразуешь в дни/часы/минуты/секунды.

_____________
sdfcfgvbgmlmknhvdfgctghvbj
ИНСИ
1. http://php.net/manual/ru/function.date-diff.php
2. http://www.php.net/manual/ru/datetime.diff.php

Выбирай на свой вкус и тести ...
killer8080
INSIDIOUS
но для них нужен PHP 5 >= 5.3.0, не на всех хостингах есть.
ИНСИ
killer8080 если на твоем хостинге нет php 5, меняй хостинг! smile.gif
Strannik
если делаю так

$data1="28-07-2011 05:16";
$data2="21-07-2011 01:16";
$dat1=mktime(01, 16, 0, 07, 21, 2011);
$dat2=mktime(05, 16, 0, 07, 28, 2011);
$dat=$dat2-$dat1;
echo date("d H:i",$dat);


выдает неправильный результат (08 05:00)
killer8080
Цитата (INSIDIOUS @ 25.07.2011 - 14:21)
killer8080 если на твоем хостинге нет php 5, меняй хостинг!

на моём хостинге, точнее хостинге заказчика, PHP Version 5.2.6-1+lenny13, менять хостинг пока причин нет :)
Strannik
вот это
$data1="28-07-2011 05:16";
$data2="21-07-2011 01:16";
$dat1=mktime(01, 16, 0, 07, 21, 2011);
$dat2=mktime(05, 16, 0, 07, 28, 2011);
$dat=$dat2-$dat1;

можно записать проще
$data1="28-07-2011 05:16";
$data2="21-07-2011 01:16";
$dat = strtotime($data1) - strtotime($data2);

а дальше если php >= 5.3.0 ,то как посоветовал INSIDIOUS, если более старая версия php то чисто арифметически, делишь на количество секунд в сутках и округляешь в меньшую сторону, получишь количество дней, ну и так далее.
Strannik
функции как посоветовал INSIDIOUS я не могу пока понять(:
ИНСИ
Strannik ничего сложного нет :) попробуй так:
if(!class_exists('DateTime')) exit('Смени хостера :)');

$startDay = new DateTime('21-07-2011 01:16');
$endDay = new DateTime('28-07-2011 05:16');
$interval = $endDay->diff($startDay);

echo $interval->format('%d days, %m month. %y year');
ИНСИ
Strannik если не сработает код выше, то можешь использовать этот код:
function dateDiff($startDay, $endDay) {
$endDay = strtotime($endDay);
$startDay= strtotime($startDay);

$difference = abs($endDay - $startDay);
$return['days'] = floor($difference / 86400);
$return['hours'] = floor($difference / 3600) % 24;
$return['minutes'] = floor($difference / 60) % 60;

return $return;
}
print_r( dateDiff('21-07-2011 01:16','28-07-2011 05:16') );


На выходе получаешь массив с данными.
Strannik
спасибо народ
Guest
<?php

$futuredate = "06.06.2013";
$datenow = time();
$futuredate = strtotime($futuredate);
$max = $futuredate - $datenow;

$day = intval($max/60/60/24);
$hour = intval(($max - $day*60*60*24)/60/60);
$minut = intval(($max - $day*60*60*24 - $hour*60*60)/60);
$ec = intval($max -$day*60*60*24- $hour*60*60 -$minut*60);

echo $day."-day ".$hour."-hour ".$minut.'-min '.$ec.'-second';


?>
ilyaplot
$date_start = "28-07-2011 05:16";
$date_end="21-07-2011 01:16";
$seconds = strtotime($date_end) - strtotime($date_start); // Получим время в секундах


_____________
Заработай на Userator
rooor
а на дату топика никто не смотрит, да?) smile.gif
FatCat
Цитата (killer8080 @ 25.07.2011 - 11:28)
для них нужен PHP 5 >= 5.3.0, не на всех хостингах есть

Я писал код еще под пхп4: http://phpforum.ru/index.php?showtopic=0&v...ndpost&p=307797

_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

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