[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Количество часов между датами
pretty_xai
Прошу вашей помощи. У меня возникло два вопроса при работе с датами.

1.Вношу текущую дату в БД (поле типа datetime) таким образом
$today = date("d.m.y H:i:s"); 
$query = ("INSERT INTO el_zhurnal
SET neispr_date = '"
.$today."'");
Таким образом вносятся в БД два поля (дата подачи заявки, и дата устранения неисправности). Но в базу дата вносится в формате "Y.m.d H:i:s". Подскажите пожалуйста. Версия php 5.2.12.
Почему дату в базе нужно хранить именно в формате d.m.y H:i:s? Потому что при выводе на экран таблицы из базы необходимено именно в формате день.месяц.год.

2. Надо подсчитать количество рабочих часов между датой подачи заявки и датой устранения неисправности без учета выходных (рабочий день с 8.00-17.00, суббота,воскресенье - выходной).

Помогите пожалуйста! Ума не приложу как это сделать. Заранее большое спасибо!



Спустя 17 минут, 29 секунд (18.07.2012 - 13:46) DarkLynx написал(а):
Цитата (pretty_xai @ 18.07.2012 - 10:28)
Прошу вашей помощи. У меня возникло два вопроса при работе с датами.

1.Вношу текущую дату в БД (поле типа datetime) таким образом
$today = date("d.m.y H:i:s"); 
$query = ("INSERT INTO el_zhurnal
SET neispr_date = '"
.$today."'");
Таким образом вносятся в БД два поля (дата подачи заявки, и дата устранения неисправности). Но в базу дата вносится в формате "Y.m.d H:i:s". Подскажите пожалуйста. Версия php 5.2.12.
Почему дату в базе нужно хранить именно в формате d.m.y H:i:s? Потому что при выводе на экран таблицы из базы необходимено именно в формате день.месяц.год.

2. Надо подсчитать количество рабочих часов между датой подачи заявки и датой устранения неисправности без учета выходных (рабочий день с 8.00-17.00, суббота,воскресенье - выходной).

Помогите пожалуйста! Ума не приложу как это сделать. Заранее большое спасибо!

Дату нужно хранить так что бы можно было решить поставленные задачи.
Если Вам не нужно время, его можно... нет.. даже нужно... не хранить... НО встает вопрос, а вдруг Вам в дальнейшем понадобится хранить и время.. Что будете делать со старыми записями? Вот! Поэтому, имхо, лучше сразу учесть это и хранить datetime.....но опять же если Вы уверены что время Вам не понадобится ни сейчас, ни завтра - не нужно его хранить..

Спустя 20 минут, 28 секунд (18.07.2012 - 14:06) pretty_xai написал(а):
Цитата
Дату нужно хранить так что бы можно было решить поставленные задачи.
Если Вам не нужно время, его можно... нет.. даже нужно... не хранить... НО встает вопрос, а вдруг Вам в дальнейшем понадобится хранить и время.. Что будете делать со старыми записями? Вот! Поэтому, имхо, лучше сразу учесть это и хранить datetime.....но опять же если Вы уверены что время Вам не понадобится ни сейчас, ни завтра - не нужно его хранить..


Время нужно, т.к. в поставленной задаче нужно подсчитать количество часов между датами. поэтому его нужно хранить в базе... Ну все таки подскажите, в каком формате объявлять дату в php, чтобы его можно было и в базе хранить, и выводить из базы в формате d.m.y H:i:s.

И по поводу того, как подсчитать количество часов, между датами, без учета выходных..Ни у кого мыслей нет?Очень нужно...

Спустя 1 час, 47 минут, 4 секунды (18.07.2012 - 15:53) pretty_xai написал(а):
Может я не корректно выразилась или непонятно изложила вопрос?Форумчане, подскажите пожалуйста, направьте на путь истинный....Спасибо!

Спустя 7 дней, 1 час, 2 минуты, 1 секунда (25.07.2012 - 16:55) Zhandos написал(а):
Посчитать кол-во часов между датами можно если строку перевести метку времени Unix.
Волшебная функция strtotime. Скармливаем ей строку datetime.
Дальше уже разность (кол-во пройденных секунд легко узнать).
Например:


// Дата подачи заявки
$date_request = '2012-07-24 15:33:35';
// Дата выполнения работы
$date_end_job = '2012-07-24 18:10:35';
/*
Вычисляем сколько часов пошло от подачи заявки до выполнения работы
Сперва вычисляем разность меток Unix времени
Делим на 3600 - это количество секунд в одном часу
Округляем
Profit
*/

$hours_between = round((strtotime($date_end_job) - strtotime($date_request)) / 3600, 2);
echo $hours_between;
Быстрый ответ:

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