Wochentag ermitteln

Hallo und guten Morgen,

kann mir jemand evtl. helfen wie ich einen Wochentag( Samstag Sonntag) ermitteln kann?

Danke
Frank

Hallo Frank,

$Tag = Date("w");
$Tag1 = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag","Montag");
//SetValueString(12345, $Tag1[$Tag]);
echo $Tag1[$Tag];

Vielen dank. Ich glaube ich muss noch viel lernen. Da währe ich nie drauf gekomme.
Auch mal dickes Danke an alle. Alle helfen wirklich klasse.

Gruss
Frank

Hallo zusammen,

falls Deine nächste Frage lautet: … und was ist mit Feiertagen?
So mache ich es:


// Input:
// vorhandene Variable mit dem Tagesdatum im Format: "YYYY-MM-TT" und
// der ID 12559

// Output:
// Belegt die Variable ID=51683 (DAY_STATUS) mit dem Status:
// Arbeitstag, Wochenende, Feiertag

// Anwendung in anderen Scripten:
// $Datum_status = GetValue(51683 /*[.SunriseSunset\DAY_STATUS]*/);
// if ($Datum_status == 'Arbeitstag') {
       // tue dies und das ;
// }

// Für bundeslandabhängige Feiertage besteht die Möglichkeit
// dies zu berücksichtigen, ist aber nicht gemacht.

// es fehlt noch:
// Schulferien berücksichtigen
// ---------------------------------------------------------------------



function feiertag ($datum,$bundesland='') {
    $datum = explode("-", $datum);
    $datum[1] = str_pad($datum[1], 2, "0", STR_PAD_LEFT);
    $datum[2] = str_pad($datum[2], 2, "0", STR_PAD_LEFT);
    if (!checkdate($datum[1], $datum[2], $datum[0])) return false;
    $datum_arr = getdate(mktime(0,0,0,$datum[1],$datum[2],$datum[0]));
    $easter_d = date("d", easter_date($datum[0]));
    $easter_m = date("m", easter_date($datum[0]));
    $status = 'Arbeitstag';
    if ($datum_arr['wday'] == 0 || $datum_arr['wday'] == 6) $status = 'Wochenende';
    $frage = $datum[1].$datum[2];
    
    if       ($frage == '0101') { return 'Feiertag'; // Neujahr
    } elseif ($frage == '0501') { return 'Feiertag'; // Erster Mai
    } elseif ($frage == '1003') { return 'Feiertag'; // Tag der deutschen Einheit
    } elseif ($frage == '1101') { return 'Feiertag'; // Allerheiligen
    } elseif ($frage == '1225') { return 'Feiertag'; // 1.Weihnachtstag
    } elseif ($frage == '1226') { return 'Feiertag'; // 2.Weihnachtstag
    
    } elseif ($frage == date("md",mktime(0,0,0,$easter_m,$easter_d-2,$datum[0]))) { return 'Feiertag'; // Karfreitag
    } elseif ($frage == $easter_m.$easter_d)                                      { return 'Feiertag'; // Ostersonntag
    } elseif ($frage == date("md",mktime(0,0,0,$easter_m,$easter_d+1,$datum[0]))) { return 'Feiertag'; // Ostermontag
    } elseif ($frage == date("md",mktime(0,0,0,$easter_m,$easter_d+39,$datum[0]))) {return 'Feiertag'; // Christi Himmelfahrt
    } elseif ($frage == date("md",mktime(0,0,0,$easter_m,$easter_d+49,$datum[0]))) {return 'Feiertag'; // Pfingstsonntag
    } elseif ($frage == date("md",mktime(0,0,0,$easter_m,$easter_d+50,$datum[0]))) {return 'Feiertag'; // Pfingstmontag
    } elseif ($frage == date("md",mktime(0,0,0,$easter_m,$easter_d+60,$datum[0]))) {return 'Feiertag'; // Fronleichnam


//    } elseif ($frage == '1111' && $bundesland == 'b') { return 'Martini';
//    } elseif ($frage == '1115' && ($bundesland == 'noe' || $bundesland == 'w')) { return 'Leopoldi';
    } else { return $status;
    }
}


$Datum_heute = GetValue(12559 /*[.SunriseSunset\TIME_STRING3]*/);
$tmp = feiertag($Datum_heute,'RP');
//$tmp = feiertag('2010-04-02','RP');
//echo $Datum_heute.'.'.$monat.': '.$tmp."
";
SetValue(51683 /*[.SunriseSunset\DAY_STATUS]*/ , $tmp);


Ist aber hier aus dem Forum „zusammengeklaut“ :-((

Gruss NBA

Eigentlich reicht eine einzige Zeile:

echo strftime('%A', time());

Falls in der PHP.ini nicht die korrekten Ländereinstellungen gesetzt sind, ist vorher möglicherweise noch diese Zeile sinnvoll,

setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');

sonst erfolgt die Ausgabe in englischer Sprache.

Ok dann werde ich das mal versuchen. Die PHP.ini habe ich noch gar nicht angepasst.
Vielen dank.
Frank

wenn ich setlocale setzte bekomme ich folgende Fehlermeldung.
Was mache ich da falsch ?? und der Tag ist noch in englisch


Warning:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in C:\IP-Symcon\scripts\IPSLogger_Output.ips.php on line 168

Warning:  strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in C:\IP-Symcon\scripts\37321.ips.php on line 2
Thursday

Hallo
Ich würde gerne den aktuellen sowie die die drei darauf folgenden Wochentage jeweils in eine String Variable schreiben.
Leider bekomme ich mit nachfolgendem Code immer den Fehler:

Parse error:  syntax error, unexpected '$wochentagheute' (T_VARIABLE) in /var/lib/symcon/scripts/23894.ips.php on line 7
<? 

//Wochentage Heute/Morgen/Übermorgen/Überübermorgen

$wochentage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");* 

$wochentagheute = time(); 
$wochentagmorgen = $wochentagheute + 86400; 
$wochentaguebermorgen = $wochentagmorgen*+ 86400; 
$wochentagueberuebermorgen = $wochentaguebermorgen*+ 86400; 

$heute = $wochentage[date("w",$wochentagheute)]; 
$morgen = $wochentage[date("w",$wochentagmorgen)]; 
$uebermorgen = $wochentag[date("w",$wochentagubermorgen)];
$ueberuebermorgen = $wochentag[date("w",$ueberuebermorgen)];

SetValue(48878 /*[WundergroundWetter API\Wochentage\Heute]*/,$heute);
SetValue(43544 /*[WundergroundWetter API\Wochentage\Morgen]*/,$morgen);
SetValue(24537 /*[WundergroundWetter API\Wochentage\Uebermorgen]*/,$uebermorgen);
SetValue(52524 /*[WundergroundWetter API\Wochentage\Uberuebermorgen]*/,$ueberuebermorgen);

?> 

Grüße

Albert

Ok. Nach durchlesen meines eigenen Posts habe ich einige „*“ gesehen, welche in IPS nicht sichtbar sind. Warum auch immer… zwei oder drei Schreibfehler waren auch noch vorhanden. :rolleyes:

Hallo Albert,

es ist besser, wenn du das Script was ich dir geschickt habe vielleicht vorher in Notepad übernimmst :slight_smile:

So

//Wochentage Heute/Morgen/Übermorgen/Überübermorgen

$wochentage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");

$wochentagheute = time(); 
$wochentagmorgen = $wochentagheute + 86400; 
$wochentaguebermorgen = $wochentagmorgen + 86400; 
$wochentagueberuebermorgen = $wochentaguebermorgen + 86400; 

$heute = $wochentage[date("w",$wochentagheute)]; 
$morgen = $wochentage[date("w",$wochentagmorgen)]; 
$uebermorgen = $wochentage[date("w",$wochentaguebermorgen)];
$ueberuebermorgen = $wochentage[date("w",$wochentagueberuebermorgen)];

sollte es funktionieren:

Gruß
Hans

Vielen Dank. Konnte die Fehler bereits beseitigen. Funktioniert nun einwandfrei. :slight_smile: