Witam,
Przyszła ostateczność więc piszę w sprawie pomocy.
Co chce zrobić:
Potrzebuje napisać skrypt, który do daty dzisiejszej doda x dni i ją wyświetli, lecz jeśli w daną datę wypada weekend, lub święta ma pokazać datę przypadającą na kolejny dzień roboczy.
Ogólnie kod poniżej "prawie" działa, z tym, że w tablicy $busy teraz już konkretnie mi się coś pomieszało i błędnie wskazuje weekendy i święta.
Mogę prosić o poprawienie kodu, aby w końcu zaczął działać? Przyznam się że już parę dni go męczę. Ogólnie daty sprowadziłem do liczby dni roku, ale jeśli ktoś ma lepszy pomysł czekam na sugestię.
Z góry dziękuje!
$currentYear = date('Y'); date('d.m',mktime(0
,0
,0
,3
,21
+easter_days
($currentYear),$currentYear)), date('d.m',mktime(0
,0
,0
,3
,21
+easter_days
($currentYear)+1
,$currentYear)), date('d.m',mktime(0
,0
,0
,3
,21
+easter_days
($currentYear)+49
,$currentYear)), date('d.m',mktime(0
,0
,0
,3
,21
+easter_days
($currentYear)+60
,$currentYear)), );
$days_in_year = date("z", mktime(0
, 0
, 0
, 12
, 31
, $currentYear)) + 1; for($day = 1; $day <= $days_in_year; $day++) {
$busy[$day] = false;
}
$end = new DateTime
(strval($currentYear) . "-12-31"); $endTimestamp = $end->getTimestamp();
$now = new DateTime
(strval($currentYear) . "-01-01"); $now->setTime(0,0);
$d = $now;
$oneday = new DateInterval("P1D");
$sixdays = new DateInterval("P6D");
#$res = array();
while ($d->getTimestamp() <= $endTimestamp) {
if($currentDay > 0)
$busy[$currentDay] = true;
$d = $d->add($oneday);
if ($d->getTimestamp() <= $endTimestamp) {
if($currentDay > 0)
$busy[$currentDay] = true;
}
$d = $d->add($sixdays);
}
foreach($swieta AS $data) {
if($currentDay > 0)
$busy[$currentDay] = true;
}
}
$czasdostawy = 4;
$typowana_data = date('d.m.Y',strtotime($dzis.' + '.$czasdostawy.' day')); echo '<br>Typowna data: '.$typowana_data.'<br>';
echo 'Przed: ' . $selected_day.'<br>';
while($busy[$selected_day] == true) {
$selected_day++;
}
echo 'Po: ' . $selected_day.'<br>';
$pokazdate = DateTime
::createFromFormat('Y z', strval($currentYear) . ' ' . strval($selected_day)); echo 'dobra data: '.$pokazdate->format('y-m-d').'<br>';