[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: подсчет разницы времени
alibedog
собственно имеется база в ней поля time_start и time_finish

Мы извлекаем эти две записи из базы в пхп в таком формате:

$time_start=2009-04-25 15:41:12;
$time_finish=2009-10-04 16:00:00;

И мне необходимо вычислить разницу в секундах между этими датами.

$p=$time_finish-$time_start;// вот так не получается smile.gif

подскажите как быть?



Спустя 1 час, 20 минут, 54 секунды (4.10.2009 - 18:14) twin написал(а):
Перевести в другой формат (в юникс-тайм, секунды), отнять и перевести обратно.

Спустя 37 минут, 40 секунд (4.10.2009 - 18:52) sergeiss написал(а):
Можно попробовать взять класс DateTime, и там проделать все необходимые операции (подробнее см. хэлп).

Другой вариант, еще более реалистичный и простой - находить разницу времён прямо во время запроса данных из БД.

Спустя 32 минуты, 9 секунд (4.10.2009 - 19:24) alibedog написал(а):
Цитата (twin @ 4.10.2009 - 15:14)
Перевести в другой формат (в юникс-тайм, секунды), отнять и перевести обратно.

А как перевести время в юникс формат?

Спустя 4 минуты, 20 секунд (4.10.2009 - 19:28) alibedog написал(а):
Цитата (sergeiss @ 4.10.2009 - 15:52)
Можно попробовать взять класс DateTime, и там проделать все необходимые операции (подробнее см. хэлп).

Другой вариант, еще более реалистичный и простой - находить разницу времён прямо во время запроса данных из БД.

а как можно реализовать второй вариант???

Спустя 10 минут, 49 секунд (4.10.2009 - 19:39) sergeiss написал(а):
В Постгре я бы написал так:
SQL
select time_start, time_finish, time_finish-time_start as time_diff from youtable where some_conditions

Попробуй, в MySQL тоже, вроде бы, так работает.

Спустя 1 час, 3 минуты, 58 секунд (4.10.2009 - 20:43) alibedog написал(а):
круто получилось вот что ---->
time_start -------------time_finish ------------ time_diff
2009-10-04 15:41:12 2009-10-05 15:41:12 1000000
Так вот вопрос собственно в том как получилось такая цифра миллион???

разница всего 24 часа а это 86400 сек

Спустя 13 минут, 25 секунд (4.10.2009 - 20:57) sergeiss написал(а):
А ХЗ почему smile.gif MySQL - это весьма загадочная фигня, способная простые вещи сделать очень сложными wink.gif

Возможно, что надо сделать явное преобразование типа данных для разности;
примерно так (для 3-го параметра, первые 2 не трогай):

SQL
cast( time_finish - time_start as datetime) as time_diff

Спустя 6 минут, 30 секунд (4.10.2009 - 21:03) twin написал(а):
Цитата
собственно имеется база в ней поля time_start и time_finish

Мы извлекаем эти две записи из базы в пхп в таком формате:

$time_start=2009-04-25 15:41:12;
$time_finish=2009-10-04 16:00:00;

Так я не понял, нужно все таки извлекать или нужно просто получить разницу?
Если нужна разница, то юзай (да не услышит sergeiss) в MySQL, то есть там оператор UNIX_TIMESTAMP. А если все таки нужно обязательно вытащить в php, то там есть mktime() к примеру.

Спустя 1 час, 43 секунды (4.10.2009 - 22:04) alibedog написал(а):
через mktime получилось ... только вот вопрос Я дату получаю такого формата
2009-10-04 20:55:57 а чтобы mktime правильно преобразовывал мне нужно чтобы дата была такого формата 20:55:57 10-04-2009
в описании сказано о таком синтаксисе- int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst]) так вот как Я могу поменять его?? smile.gif

надеюсь вопрос мой ясен )))

Спустя 12 минут, 58 секунд (4.10.2009 - 22:17) twin написал(а):
STR_TO_DATE

Спустя 20 минут, 25 секунд (4.10.2009 - 22:37) alibedog написал(а):
Цитата (twin @ 4.10.2009 - 19:17)
STR_TO_DATE

и что это значит???? поподробнее плиз

Спустя 53 минуты, 52 секунды (4.10.2009 - 23:31) twin написал(а):
Это оператор MySQL, котрый позволяет форматировать вывод так, как нужно.
Аналог date(). В твоем случае наверно нужно как то так:
SQL
STR_TO_DATE(`date`, 's:i:h m-d-Y')

или что то рядом

Спустя 4 минуты, 31 секунда (4.10.2009 - 23:36) alibedog написал(а):
а можно как нибудь лучше через mktime преобразование сделать, а то через sql сложновато....

Спустя 2 минуты, 24 секунды (4.10.2009 - 23:38) sergeiss написал(а):
Цитата (twin @ 4.10.2009 - 22:03)
(да не услышит sergeiss
Язва ты smile.gif
Кстати. То, что я написал - реально работает в Постгре. Безо всяких преобразований типов.

Спустя 1 час, 19 минут, 13 секунд (5.10.2009 - 00:57) twin написал(а):
Цитата
а можно как нибудь лучше через mktime преобразование сделать, а то через sql сложновато....

Напомнило бурную молодость... Из сексуальных экспериментов (НЕ СО МНОЙ, ПОДУМАЕТЕ ЕЩЕ ЧЕГО)))

Мож болше не надо, а то через... больновато...

Да не вопрос, выбор за тобой. Просто то, что может сделать SQL втаскивать в php, это примерно тот же эксперимент. Больновато...

Цитата
Язва ты

Да неее, я просто испугался, что опять рекламу постгри нарушу всю biggrin.gif

Спустя 9 часов, 22 минуты, 47 секунд (5.10.2009 - 10:20) alibedog написал(а):
Цитата (sergeiss @ 4.10.2009 - 20:38)
Цитата (twin @ 4.10.2009 - 22:03)
(да не услышит sergeiss
Язва ты smile.gif
Кстати. То, что я написал - реально работает в Постгре. Безо всяких преобразований типов.

Я использую mysql а на постгре варианта переходить нет....

Спустя 9 часов, 4 минуты, 10 секунд (5.10.2009 - 19:24) Pinoplast написал(а):
Цитата (alibedog @ 4.10.2009 - 13:53)
собственно имеется база в ней поля time_start и time_finish

Мы извлекаем эти две записи из базы в пхп в таком формате:

$time_start=2009-04-25 15:41:12;
$time_finish=2009-10-04 16:00:00;

И мне необходимо вычислить разницу в секундах между этими датами.

$p=$time_finish-$time_start;// вот так не получается smile.gif

подскажите как быть?

Проще все первести в секунды отнять и перевести обратно в часы минуты и секунды, простая математика, в часе 60 минут или 3600 секунд, а дальше простая математика с перемеными, я бы так делал wink.gif

Спустя 9 минут, 26 секунд (5.10.2009 - 19:34) alibedog написал(а):
блин не получается нормально проработать функцию mktime

скажем есть дата формата часы-минуты-секунды-день-месяц-год
как мне через mktime получить его unix timestamp ?

напиши плиз пример....

Спустя 1 день, 14 часов, 30 минут, 48 секунд (7.10.2009 - 10:04) alibedog написал(а):
ну кто у нас селен в пхп ???? помогите да! =)

Спустя 1 час, 15 минут, 15 секунд (7.10.2009 - 11:20) twin написал(а):
Цитата
скажем есть дата формата часы-минуты-секунды-день-месяц-год

А откуда такой странный формат?

Спустя 17 минут, 18 секунд (7.10.2009 - 11:37) sergeiss написал(а):
Цитата (alibedog @ 5.10.2009 - 20:34)
скажем есть дата формата часы-минуты-секунды-день-месяц-год

Я думал, что ты уже сделал всё давно smile.gif
Если у тебя есть дата в таком формате, то ты можешь разделить ее на компоненты через функцию explode(). И потом делать с ними всё, что хочешь.
Быстрый ответ:

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