Tage vergleichen und Event anzeigen

ciberjoerg

Erfahrenes Mitglied
Ich wollte mal fragen wie ich vergleichen kann ob der jetzige Tag zwischen 2 Daten befindet, und wenn ja Soll er mir einen Event anzeigen.

Die Idee war das ich eine abfrage schreibe die mir ausgibt ob es Halloween, Weihnachten Ostern usw ist.

Dazu gebe ich die Starttage und Endtage an,
Beispiel:
Befindet sich der Tag zwischen den 1.12. und 26.12. soll mir Angegeben werden das es Weihnachten ist.

Meine Idee als code:
PHP:
if($heute >= $xmasstart && $heute <=$xmasstop) {
echo"Weichnachten";
};
else(){
echo"nothing";
}

Ich vermute mal das der Code falsch sein wird. Daher wie mach ich das richtig?
 
PHP:
$heute = date("d.m.");
$halloweenstart="25.10.";
$halloweenstop="02.11.";

if ($heute >= $halloweenstart and $heute <= $halloweenstop){
    echo "halloween";
};
 
Hallo!

In Deinem Beispiel vergleichst Du Strings.
Dabei kannst Du nur prüfen ob sie gleich (==) oder ungleich (!=) sind.
Willst Du aber prüfen ob der Wert kleiner/grösser ist, brauchst Du Zahlen..... also einen Timestamp.

Gruss Dr Dau
 
Kein Probel mit einem Stringvergleich. Du musst das Datum nur in einen sortierbaren String bringen.
Dies ist normalerweise yyyy.mm.dd
Da du das Jahr nicht brauchst, lässt du es weg und kreigst mm.dd

PHP:
<?php

	$heute = date("m.d");
	$halloweenstart="10.25";  // 25. Oktober
	$halloweenstop="11.02";  // 2. November
	
	if ($heute >= $halloweenstart and $heute <= $halloweenstop){
	    echo "halloween";
	}; 
?>
 
@yaslaw, und nun teste mal diesen Code:
PHP:
<?php

    $heute = "01.01";  // 1. Januar
    $halloweenstart="12.25";  // 25. Dezember
    $halloweenstop="01.02";  // 2. Januar
    
    if ($heute >= $halloweenstart and $heute <= $halloweenstop){
        echo "halloween";
    }; 
?>
Zur Erinnerung: der 1. Januar liegt zwischen dem 25. Dezenber und dem 2. Januar. ;)
Folglich müsste das Script also "halloween" ausgeben..... tut es aber nicht. :p

[edit]
Selbes Problem taucht auch auf wenn man die Punkte weglassen würde, da 0102 nunmal kleiner als 1225 ist.
[/edit]
 
Zuletzt bearbeitet:
Zurück