Forum Webscript.Ru

Программирование => PHP => Тема начата: Shaman_rnd от 09 Сентября 2003, 11:50:40

Название: Сложение времени
Отправлено: Shaman_rnd от 09 Сентября 2003, 11:50:40
Люди, посоветуйте, как лучше сделать.
есть таблица в мускуле примерного вида:

id     | имя     | приход | уход

1      |  вася   | 9-00     | 12-30
2      | вася    | 10-30   | 11-00

и т.д.....
как лучше подсчитать количество отработаных часов??
Название: Сложение времени
Отправлено: AliMamed от 09 Сентября 2003, 12:02:27
надо начать с того, что вводить время в формате времени
Название: Сложение времени
Отправлено: Croaker от 09 Сентября 2003, 12:08:19
А "приход" и "уход" в каком формате хрянятся?
Название: Сложение времени
Отправлено: Shaman_rnd от 09 Сентября 2003, 12:27:09
да еще ни в каком, я хочу узнать как это все лучше сделать будет
Название: Сложение времени
Отправлено: Michel_Mak от 09 Сентября 2003, 12:32:48
Храни, как AliMamed сказал - так и делай. А потом уход-приход= рабочее время. Незабудь про обед :)
Название: Сложение времени
Отправлено: Shaman_rnd от 09 Сентября 2003, 12:35:00
ок.спасибо, попробую
Название: Сложение времени
Отправлено: mikelsv от 10 Сентября 2003, 23:11:49
1) Время пишешь в формате 00-00 (09-30).
конец в часах= substr(уход,0,2);
конец в минутах= substr(уход,2,2);
начало в часах= substr(приход,0,2);
начало в минутах= substr(приход,2,2);

Получится:
конец в часах= 12
конец в минутах= 30
начало в часах= 09
начало в минутах= 00


Дальше сам додумаешься?

Будут еще вопросы пиши на http://www.mikelsv.com/forum Интернет програмирование. Чем смогу помогу.
Название: Сложение времени
Отправлено: voodoo от 11 Сентября 2003, 02:17:40
mikelsv, ну просто ужас летящий на крыльях ночи.
так вот и появляются проблемы 2к.

А если перец в ночную смену работает, с 22.00 до 6.00, это что же, -16 часов ему записывать за каждый выход?
Название: Сложение времени
Отправлено: AliMamed от 11 Сентября 2003, 11:40:05
[off]mikelsv еще один такой постинг и будешь забанен[/off]
Название: Сложение времени
Отправлено: Yukko от 11 Сентября 2003, 12:47:24
Цитировать
mikelsv:
http://www.mikelsv.com/forum Интернет програмирование

[OFF]были мы там, ноль постов... популярный форум[/OFF]
Название: Сложение времени
Отправлено: ThE0ReTiC от 11 Сентября 2003, 12:54:28
Yukko
[off]
флейм не разводи
[/off]
Название: Сложение времени
Отправлено: Phoinix от 11 Сентября 2003, 13:25:07
В коде не опишу, в PHP не работал, но алгортм примерно такой:

1. Выборка по пользователю из базы;
2. Цикл построчной обработки выбранных данных;
2.1. Если уж у тебя формат времени hh-mm, то переводишь это время в часы: hh+(mm/60). (хотя логичней было бы записывать в базу либо просто часы с дробью, либо минуты с 00.00)
2.2. Если начальное время больше конечного времени, то:
2.2.1. время работы = (24 - начальное время) + конечное время;
2.3. Иначе
2.3.1. время работы = конечное время - начальное время;
2.4. всего времени отработано = всего времени отработано + время работы;
3. Конец цикла построчной обработки выбранных данных;

Ответ: всего времени отработано :)

P.S. Только смена должна быть не более 24 часов...
Название: Сложение времени
Отправлено: Yukko от 11 Сентября 2003, 13:29:49
У меня приходит на ум перевести все в Unixtimestamp и все операции проводить с ним.
Название: Сложение времени
Отправлено: Phoinix от 11 Сентября 2003, 13:36:48
Yukko
Для математики, самое то, половину лишних движений убирается, и работать корректней будет, отпадают лишние проверки.
Название: Сложение времени
Отправлено: ThE0ReTiC от 11 Сентября 2003, 13:42:41
Yukko
Э...
перестанет работать после 36 года
Название: Сложение времени
Отправлено: Yukko от 11 Сентября 2003, 13:49:52
Цитировать
ThE0ReTiC:
перестанет работать после 36 года

А тут можно поподробнее, а то я не в курсе :)
Название: Сложение времени
Отправлено: Yukko от 11 Сентября 2003, 14:01:46
Так это решается на MsSQL:
print  datediff (hour, dateadd(day,-1, getdate()), getdate())

Вместо dateadd() и getdate() можно вставлять любое время в формате:
yyyy-mm-dd hh:mm:ss
Предварительно сравнив что первое больше второго...

Но, кажется, в MySQL такого нет...
Название: Сложение времени
Отправлено: Yukko от 11 Сентября 2003, 14:20:56
ThE0ReTiC
Нашел
Цитировать
MySQL manual
Величины типа TIMESTAMP могут принимать значения от начала 1970 года до некоторого значения в 2037 году с разрешением в одну секунду. Эти величины выводятся в виде числовых значений.
Название: Сложение времени
Отправлено: mikelsv от 11 Сентября 2003, 21:59:28
Зачем мозги человеку?:confused:
Если начало > конца. Конец + 24 часа.

Мне начинает это нравиться:) , будут еще вопросы пиши.

Если не можешь вводить время в таком формате 00-00, могу помочь.
Название: Сложение времени
Отправлено: Меняздесьдавнонет от 12 Сентября 2003, 00:01:10
убогий самоутверждается