Script Urlaub bereitet Probleme

Hallo zusammen,

ich dachte es läuft, aber es scheint noch ein Fehler in meinem Script zu sein, nachdem ich eine Variable angelegt habe, welche den geplanten Urlaub übersteuern soll.

Also folgender Plan:
„Alle_Abwesend“ soll „Urlaub_Aktiv“ übersteuern, wenn TRUE.

Für „Urlaub_Aktiv“ gibt es ein Von Datum mit Uhrzeit und ein Bis Datum mit Uhrzeit, welches berechnen soll, wann wir im Urlaub sind:

<?php

// Urlaub
$VAR_Urlaub = 51540;
$VAR_Dauer_des_Urlaubs = 40503;

$Urlaub_Beginn = getValue(12112);
$Urlaub_Beginn1 = date("d.m.Y - H:i", $Urlaub_Beginn);
$Urlaub_Ende = getValue(31665);
$Urlaub_Ende1 = date("d.m.Y - H:i", $Urlaub_Ende);
$Alle_Abwesend = GetValueBoolean(19652); //Soll UrlaubAktiv auf TRUE setzen!

$timestamp = time();
$aktdatum = date("d.m.Y - H:i", $timestamp);

print $aktdatum;
print $Urlaub_Beginn1;
print $Urlaub_Ende1;

//Dauer noch offen!

    IF ($Alle_Abwesend == true)
	{
        print "Abwesend Alarm aktiv";
		SetValue($VAR_Urlaub, "Abwesend Alarm aktiv");
		//SetValue($VAR_Dauer_des_Urlaubs, "");
        SetValue(45707, true);
	}
	ELSEIF ($aktdatum <= $Urlaub_Beginn1)
	{
		print "Warten auf Urlaub";
        SetValue($VAR_Urlaub, "Warten auf Urlaub");
		SetValue(45707, false);
	}
	ELSEIF ($aktdatum > $Urlaub_Beginn1 and $aktdatum < $Urlaub_Ende1)
	{
		print "Urlaub aktiv";
        SetValue($VAR_Urlaub, "Urlaub aktiv");
		SetValue(45707, true);
	}
	ELSEIF ($aktdatum > $Urlaub_Ende1)
	{
        print "Kein Urlaub geplant";
		SetValue($VAR_Urlaub, "Kein Urlaub geplant");
		//SetValue($VAR_Dauer_des_Urlaubs, "");
        SetValue(45707, false);
	}

?>

Leider funktioniert das Script nicht wie gewünscht. Die eingegeben Daten funktionieren nicht immer. Es werden offensichtlich nur die angegeben Tage miteinander verglichen.
Vielen Dank für die Hilfe!

Du vergleichst keine Datumswerte sondern Strings. Benutze zum Vergleich die Zeitstempel direkt, anstatt die umgewandelten Strings.

1 „Gefällt mir“

Du müsstest die Timestamps direkt zum Vergleich heranziehen und nicht den String, den Du mit der date Funktion generiert hast.

1 „Gefällt mir“

Also beispielsweise so?

...
ELSEIF ($timestamp <= $Urlaub_Beginn)
...

Das hat leider nie funktioniert.

Sofern die Variable den korrekten Zeitstempel inkl Jahreszahl enthält, ja.

1 „Gefällt mir“

Ich verstehe die Welt nicht mehr… Vielen Dank! Ich hatte es mal so gemacht, aber da funktionierte es nie und deshalb habe ich durch viel google die Strings generiert. Was natürlich quatsch ist.
Jetzt funktioniert es! Danke für die schnelle Hilfe!

Ich habe meine Superkräfte der magischen Fernwirkung eingesetzt. :wink:

Bitte das nächste Mal etwas früher und ohne Aufforderung :nerd_face: :stuck_out_tongue_closed_eyes: