[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сравнения дат.
Niksik
Здравствуйте,у меня такой вопрос,есть двен даты 2011.11.05 23:50:25 и 2011.11.05 23:59:50 нужно узнать разницу во времяни,кто знает обьясните как это сделать, smile.gif пожалуйсто.



Спустя 7 минут, 14 секунд (6.01.2012 - 10:00) Ramzil_Nixon написал(а):
если из бд, то используй strtotime()

strtotime($result['date'])

Спустя 2 минуты, 22 секунды (6.01.2012 - 10:02) SoMeOnE написал(а):
Niksik
Переведи в юниксовское время, вычти, а потом обратно переведи.

Спустя 3 минуты, 23 секунды (6.01.2012 - 10:06) Niksik написал(а):
А как прибавить 2 часа к дате?

Спустя 12 минут, 31 секунда (6.01.2012 - 10:18) Ramzil_Nixon написал(а):
Niksik, сколько секунд в минуте? 60? А в часу? 60 * 60 = 3600 секунд в часе. Соответственно, 3600 * 2 = 7200 секунд.

Спустя 18 секунд (6.01.2012 - 10:18) SoMeOnE написал(а):
data + 2*3600

Спустя 4 минуты, 52 секунды (6.01.2012 - 10:23) Niksik написал(а):
Мужики может спрошу что то тупое просто с датой работать не умею,
У меню переменная с датой

$date = getDate();

а как именно прибавить?может функция какая?

Спустя 4 минуты, 58 секунд (6.01.2012 - 10:28) Ramzil_Nixon написал(а):
Niksik, а не лучше использоватть time() ?

Спустя 12 минут, 8 секунд (6.01.2012 - 10:40) Niksik написал(а):
Вот реально уже стыдно biggrin.gif sad.gif но пожалуйсто можеш показать?

Спустя 48 секунд (6.01.2012 - 10:41) Ramzil_Nixon написал(а):
Niksik, может данные дашь? с которыми работаешь? Я не экстрасенс, гадать не могу

Спустя 5 минут, 56 секунд (6.01.2012 - 10:47) Niksik написал(а):
Я без функций сразу дату покажу.

$date = "2011.11.05 23:50:25";
$date2 = "2011.11.05 23:59:50";
$date 3 = "А здесь должна быть разница между датами и надо ещё прибавить 2 часа";

некак не пойму как сделать

Спустя 25 минут, 9 секунд (6.01.2012 - 11:12) Ramzil_Nixon написал(а):
$date3 = strtotime($date2) - strtotime($date) + 7200;

Выведет результать в секундах.. Как обратно в часы перевсти, это уж сам думай :)

Спустя 19 минут, 35 секунд (6.01.2012 - 11:32) dadli написал(а):
Ramzil_Nixon
такои формат как у Niksik не коректно для функции strtotime(); нужен так 2011-11-05 23:50:25

Niksik

вичислить разница между двух дати можно примерно так (и разницу добавим 2 час как ви хотели)

$date = "2011-11-05 23:50:25";
$date2 = "2011-11-05 23:59:50";


function skolko_vremeni($start,$finish) {

$long = $finish - $start;

$den = $long / (3600 * 24);
if (substr_count($den,".") > 0) {
$den = strstr($den,".",true);
}
//

$chas = $long - $den * (3600 * 24);
$chas = $chas / 3600;
if (substr_count($chas,".") > 0) {
$chas = strstr($chas,".",true);
}
//

$minut = $long - $den * (3600 * 24) - $chas * (3600);
$minut = $minut / 60;
if (substr_count($minut,".") > 0) {
$minut = strstr($minut,".",true);
}
//

$second = $long - $den * (3600 * 24) - $chas * 3600 - $minut * 60;



echo "разница между етих временни есть: <br>";
echo $den." ден<br>";
echo $chas." час<br>";
echo $minut." минут<br>";
echo $second." секунд<br>";
}


skolko_vremeni(strtotime($date),strtotime($date2)+7200);

Спустя 1 минута, 6 секунд (6.01.2012 - 11:33) SoMeOnE написал(а):
В данном случае strtotime не поможет. Время не в его формате.
Можно что типа такого попробывать
print mktime(23,59,50,11,05,2011) - mktime(23, 50, 25, 11, 05, 11);

Хотя и не желательно так делать. Лучше всегда работать с юникс временем. Записывая в базу. А когда нужно показать юзеру, привести его в какой угодно вид ф-ей date()

Спустя 4 часа, 35 минут, 40 секунд (6.01.2012 - 16:09) Niksik написал(а):
Спасибо очень выручили, какраз буду знать.

Спустя 3 минуты, 52 секунды (6.01.2012 - 16:13) Семён написал(а):
Написали за него ) он даже и не понял что произошло. biggrin.gif

Спустя 45 минут, 53 секунды (6.01.2012 - 16:58) GORE_PROGRAMMIST написал(а):
Привет всем,обращаюсь к вам с таким вопросом,я создаю онлайн футбол а внём лиги открываются каждые 4 часа , вот мне и надо ,чтобы время пользователя и серверное время сравнивалось и показывало через какое время будет открыта лига,как это сделать ато я похож на NIKSIK тоже не соображаю,а код что вы написали мне походу не подходит,пожалуйсто спасите.

Спустя 2 часа, 7 минут, 40 секунд (6.01.2012 - 19:06) inpost написал(а):
GORE_PROGRAMMIST
Выше же код smile.gif Большую дату переводишь в юникс-время (меньшую тоже) и отнимаешь одно время от второго. Получишь число (В СЕКУНДАХ), как это число перевести в минуты/часы/дни - в школе учили сколько в минуте секунд smile.gif

Спустя 10 минут, 50 секунд (6.01.2012 - 19:17) GORE_PROGRAMMIST написал(а):
как перевесть в юникс-время?mktime()?

Спустя 1 час, 39 минут, 54 секунды (6.01.2012 - 20:57) ИНСИ написал(а):
Niksik можешь попробовать так, если у тебя версия PHP >= 5.3
function diffDatePhp53($end = false, $start = 'now', $flag = 'all', $arr = array()) {

if($end == false || !class_exists('DateTime')) return false;

//date_default_timezone_set('America/New_York');

$dateStart = new DateTime($start);
$dateEnd = new DateTime($end);
$interval = $dateStart->diff($dateEnd);

if($flag == 'all') {
$arrValues = array('seconds' => 's','minutes' => 'i','hours' => 'h','days' => 'd','months' => 'm','years' => 'y');

foreach($arrValues as $key => $data) {
$arr[$key] = $interval->format('%' . $data);
}

return $arr;
} else {
return $interval->format('%' . $flag);
}
}


print_r(diffDatePhp53('2011.11.05 23:59:50','2011.11.05 23:50:25'));

Спустя 1 час, 44 минуты, 12 секунд (6.01.2012 - 22:41) SoMeOnE написал(а):
INSIDIOUS
А это будет работать?
if($end == false || !class_exists('DateTime')) return false;

Нету же класса.

Спустя 26 минут, 45 секунд (6.01.2012 - 23:08) Ramzil_Nixon написал(а):
dadli, не буду спорить, тебе видней smile.gif

Спустя 1 час, 43 минуты, 53 секунды (7.01.2012 - 00:52) ИНСИ написал(а):
Цитата
А это будет работать?

Вроде будет smile.gif

Цитата
Нету же класса.

Спустя 8 часов, 20 минут, 35 секунд (7.01.2012 - 09:12) SoMeOnE написал(а):
INSIDIOUS
Ок. понятно)
Быстрый ответ:

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