Hallo und Danke, doch leider geht es nicht
Wenn die Dokumentation zu den relativen Datumsformaten nicht verständlich oder ungenügend ist, dann mach es einfach und stupid:
<?php
/* Unit-Test
$LE="<br>\n";
$zeitpunkt[] = date('U');
$zeitpunkt[] = date('U', mktime(16, 30, 0, 1, 7, 2000));
$zeitpunkt[] = date('U', mktime(16, 31, 0, 1, 7, 2000));
$zeitpunkt[] = date('U', mktime(17, 0, 0, 1, 8, 2000));
$zeitpunkt[] = date('U', mktime(17, 0, 0, 1, 9, 2000));
$zeitpunkt[] = date('U', mktime(22, 30, 0, 1, 9, 2000));
$zeitpunkt[] = date('U', mktime(22, 31, 0, 1, 9, 2000));
foreach ($zeitpunkt as $zp) {
if ( ifWeekend($zp) ) {
echo date('Y m d H:i :: N G :: D, H:i', $zp) . " : Positiv$LE";
} else {
echo date('Y m d H:i :: N G :: D, H:i', $zp) . " : Negativ$LE";
}
}
//*/
function ifWeekend
(
$timestamp,
$firstWeekendDay = 5, //Freitag
$firstWeekendHour = 16,
$firstWeekendMinute = 31,
$lastWeekendDay = 7, //Sonntag
$LastWeekendHour = 22,
$LastWeekendMinute = 30
) {
$weekDay = date('N', $timestamp);
$hour = date('G', $timestamp);
$minute = date('i', $timestamp);
if (
(
$weekDay == $firstWeekendDay
and $hour > $firstWeekendHour
)
or (
$weekDay == $firstWeekendDay
and $hour == $firstWeekendHour
and $minute >= $firstWeekendMinute
)
or (
$weekDay > $firstWeekendDay
and $weekDay < $lastWeekendDay
)
or (
$weekDay == $lastWeekendDay
and $hour < $LastWeekendHour
)
or (
$weekDay == $lastWeekendDay
and $hour == $LastWeekendHour
and $minute <= $LastWeekendMinute
)
) {
return true;
} else {
return false;
}
}
Wenn Deine Definition von "Wochenende" aber auch wahlweise den "Montag 6:00" Uhr als Ende vorsehen sollte oder können soll, dann brauchst Du ein wenig wenig mehr if(and or)-then-else.