time — Расчет разницы дат при работе с набором рабочих часов в Stack Overflow

Я работаю над приложением справочной службы. Пользователи создают билеты, а я пытаюсь понять, как кодировать время.

Скажем, у меня есть массив рабочих часов, который выглядит так:

$bh['Monday']['start_time'] = "8:00am"$bh['Monday']['end_time'] = "5:00pm"$bh['Tuesday']['start_time'] = "8:00am"$bh['Tuesday']['end_time'] = "5:00pm"$bh['Wednesday']['start_time'] = "8:00am"$bh['Wednesday']['end_time'] = "5:00pm"$bh['Thursday']['start_time'] = "8:00am"$bh['Thursday']['end_time'] = "5:00pm"$bh['Friday']['start_time'] = "8:00am"$bh['Friday']['end_time'] = "5:00pm"

И массив с праздниками:

$holidays = array("Dec 25th","Nov 24th")

У меня также есть две другие переменные:

$resolve_within = "5";
$resolve_within_duration = "days";

Что у меня так далеко:

$resolve_within = "5";
$resolve_within_duration = "days";
$holidays = array("Dec 25th","Nov 24th")

$bh['Monday']['start_time'] = "8:00am"$bh['Monday']['end_time'] = "5:00pm"$bh['Tuesday']['start_time'] = "8:00am"$bh['Tuesday']['end_time'] = "5:00pm"$bh['Wednesday']['start_time'] = "8:00am"$bh['Wednesday']['end_time'] = "5:00pm"$bh['Thursday']['start_time'] = "8:00am"$bh['Thursday']['end_time'] = "5:00pm"$bh['Friday']['start_time'] = "5:00pm"$bh['Friday']['end_time'] = "5:00pm"

$start = new DateTime('now'); //when the ticket is created
$end = new DateTime('now');
$end->modify('+'.$resolve_within.' '.$resolve_within_duration); //this is essentially the due by time, adding 5 days to 'now'$interval = $end->diff($start);

// total days
$days = $interval->days;

// create an iterateable period of date (P1D equates to 1 day)
$period = new DatePeriod($start, new DateInterval('P1D'), $end);

foreach($period as $dt) {
$curr = $dt->format('D');

//adjust days for holidays
if (in_array($dt->format('M jS'), $holidays)) {
$days--;
}
}

echo "Ticket is due in $days days.";

Итак, учитывая дату начала и дату окончания, как я могу определить срок выполнения, исключая даты в $holidays массив, а также принимая во внимание время и дни в $bh (рабочее время) массив?

Например, если кто-то создает билет в среду, 23.08.16, в 15:00, а в пятницу выходной. Срок должен быть четверг 8/11/16 в 3 часа дня. Помните также, что продолжительность может быть часами, а не днями.

Например, некоторые тикеты могут быть помечены как срочные, поэтому значение $ resol_within может быть «4», а $ resol_within_duration будет «часы»

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector