InternInhaltsverzeichnisGlossarBausteineLinklisteTutorialsKommentare

Thema: PHP - Sommerzeit berechnen Artikel anzeigen

G€®®IT ✶✶✶✶✶ schrieb am Samstag, den 4 März 2023 #1
Hier ist ein erweitertes Script, welches die Sommer-/Winterzeit für das aktuelle Jahr berechnet und den aktuellen Zeitraum farbig hervorhebt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
function zeitumstellung($jahr) {
    
$start_sommerzeit date_create_from_format('j.m.Y H:i:s''31.03.' $jahr ' 02:00:00')->modify('last Sunday');
    
$end_sommerzeit date_create_from_format('j.m.Y H:i:s''31.10.' $jahr ' 03:00:00')->modify('last Sunday');
    
$start_winterzeit date_create_from_format('j.m.Y H:i:s''31.03.' . ($jahr 1) . ' 02:00:00')->modify('last Sunday');
    
$end_winterzeit date_create_from_format('j.m.Y H:i:s''31.10.' $jahr ' 03:00:00')->modify('last Sunday');
    
    
$now = new DateTime();
    
$is_summer_time $now >= $start_sommerzeit && $now $end_sommerzeit;
    
$is_winter_time $now >= $start_winterzeit || $now $end_winterzeit;
    
    
$sommerzeit $start_sommerzeit->format('j.m.Y') . ' - ' $end_sommerzeit->format('j.m.Y');
    
$winterzeit $end_winterzeit->format('j.m.Y') . ' - ' $start_winterzeit->format('j.m.Y');
    
    if (
$is_summer_time) {
        
$sommerzeit '<span style="color:LimeGreen">' $sommerzeit '</span>';
    }
    if (
$is_winter_time) {
        
$winterzeit '<span style="color:LimeGreen">' $winterzeit '</span>';
    }
    
    return array(
"Sommerzeit" => $sommerzeit"Winterzeit" => $winterzeit);
}

$zeitumstellung zeitumstellung(date('Y'));

echo 
"Sommerzeit: " $zeitumstellung["Sommerzeit"] . "<br>";
echo 
"Winterzeit: " $zeitumstellung["Winterzeit"];
?>


Sommerzeit: 26.03.2023 - 29.10.2023
Winterzeit: 29.10.2023 - 24.03.2024


Für weitere Optimierungen bin ich dankbar.
Werner schrieb am Samstag, den 4 März 2023 #2
Anstatt dem deutschen Datumsformat: 'j.m.Y H:i:s' würde ich bei Berechnungen das englische Datumsformat (ISO 8601) : 'Y-m-d H:i:s' vorziehen. Die Zeitzone wird im Script nicht gesetzt:

1
2
3
<?php
date_create_from_format
('Y-m-d H:i:s'$jahr '-03-31 02:00:00'timezone_open("Europe/Berlin"));
?>