• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

öffnungszeiten über 24uhr

TecEye

New member
Hiermit berechne ich ob ein Geschäft momentan offen ist, die Öffnungszeiten sind zu jedem Tag hinterlegt.
$today_time ist die Öffnungszeit des aktuellen Tages

PHP:
// Heute Anfang
	$today_start		= $today_time[0];
	$today_start_date	= explode(":", $today_start);
	$today_start_mktime	= mktime($today_start_date[0], $today_start_date[1], 0, 0, 0, 0);
	// Heute Ende
	$today_end			= $today_time[1];
	$today_end_date		= explode(":", $today_end);
	$today_end_mktime	= mktime($today_end_date[0], $today_end_date[1], 0, 0, 0, 0);
	// Ist geöffnet?
	$now_time	= mktime(date("H",time()), date("i",time()), 0, 0, 0, 0);
	echo $isopen = ($now_time >= $today_start_mktime AND $now_time <= $today_end_mktime) ? "geöffnet" : "geschlossen";

funktioniert auch bei einer Öffnungszeit an einem einzigen Tag, aber Restaurants etc haben ja oft bis weit über Mitternacht offen, wie kann ich das berücksichtigen, es sprängt mir die Birne
 
Deine Definition für "Öffnungszeit eines Tages" kann bei diesem Problem einfach nicht funktionieren, wenn die Öffnungszeiten über die Tagesgrenze hinausgehen.
Entweder du führst mehrere Öffnungszeitintervalle für jeden Tag ein und machst um Mitternacht einen harten Schnitt (z.B. so Mo: 00:00-02:00 und 18:00-24:00, Di: 00:00-01:30 und 12:00-13:00 und ...) - wäre sowieso hilfreich, da ich auch einige Restaurants kenne, die z.B. Mittags offen haben (z.B. von 12-14 Uhr) und dann erst wieder Abends (z.B. von 18-23 Uhr). Mittagspausen für andere Geschäfte kannst du damit auch abdecken.

Oder du führst eine neue Definition ein und sagst einfach nur: Öffnungszeit ist ein Zeitinterval in der Woche (also mit Wochentag). Somit hättest du z.B. Offnungszeiten wie "Mo 20:00 bis Di 02:00", "Mi 12:00 bis Do 00:30", ... Wenn du dann in deine Berechnung auch noch den Wochentag mit einbeziehst kannst du schön testen, ob gerade offen ist.
 
ohman das wird ja noch schwieriger als ich dachte, weil ich hol ja mit dem wochentag date(w,time()) die entsprechenden öffnungszeiten aus der db, das heißt die öffnungszeiten in der nacht vom vortag werden gar nicht berücksichtigt, ohman...ist das tricky
 
OK - Habs glaub ich gelöst. habe den vortag ermittelt, wenn der entzeitpunkt kleiner als startzeit ist setzt ich den entzeitpunkt auf 23:59:59, und setze eine weitere öffnungszeit am heutigen tag von 00:00:00 - entzeitpunkt (zB 02:30:00).
 
stimmt an eine Pause hab ich noch gar nicht gedacht, mist, hmmmm...
wenn ich tagesintervalle mache ist es ja schwierig diese nutzerfreundlich anzuzeigen: dann wärs ja so:
Montag
00:00 - 02:00
12:00 - 15:00
18:00 - 23:00
das sieht ja dof aus bei der Auflistung, also ich meine das mit nachts
 
Zuletzt bearbeitet:
OK habs gemeistert, langer code aber es erfüllt seinen Zweck, echt verzwickt gewesen :D danke kkapsner für die Idee mit den Pausen, wär ja weniger praktikabel ohne :)

Jetzt jetzt alle Möglichkeiten verfügbar :)
20121219_oeffnungszeiten2.JPG
 
Zuletzt bearbeitet:
habe für jeden tag einen eintrag gemacht und es so eingetragen zB.: 12:00-14:00,18:00-02:00
und die Werte in arrays zerlegt und dann arbeite ich damit weiter
 
Zuletzt bearbeitet:
sieht sehr stark nach Verletzung der Normalisierungsrichtlinien aus. Bitte nochmal mit beschäftigen. Erleichtert einem viel Streß, beim updaten, etc.

Lg Kasalop
 
Zurück
Oben