Probleme mit der date Funktion

kbit

Erfahrenes Mitglied
Hi ich habe folgendes Problem ..ich wollte mein logo ändern über weihnachten/silvester und wollte das timen .. also bis zum 26.12 soll das weihnachtslogo erscheinen und danach das normale (alte ) logo .. ab den 30.12 bis zum 01.01 das silvesterlogo..
Das habe ich so gemacht:

PHP:
function Logo(){
        
        $now=date("m.d.y, H:i:s");
        $weihnachtslogo="26.12.2008, 23:59:00";
        $normallogo ="30.12.2008, 23:59:00";        
        $silvesterlogo="01.01.2009, 23:59:00";        
        
        
        if($now <= $weihnachtslogo){
            $return="weihnachtslogo";
        }elseif($now <= $normallogo){
            $return="normallogo";                  
        }elseif($now <= $silvesterlogo){
            $return = "silvesterlogo";
        }else{
            $return = "false";
        }
                        
        return $return;        
    }

Nun hatte ich das mal getestet :


PHP:
function Logo(){
        
        $now=date("30.12.2008, 23:59:01");
        $weihnachtslogo="26.12.2008, 23:59:00";
        $normallogo ="30.12.2008, 23:59:00";        
        $silvesterlogo="01.01.2009, 23:59:00";                
        
        if($now <= $weihnachtslogo){
            $return="weihnachtslogo";
        }elseif($now <= $normallogo){
            $return="normallogo";                  
        }elseif($now <= $silvesterlogo){
            $return = "silvesterlogo";
        }else{
            $return = "false";
        }
                        
        return $return;
Ich habe also $now mal einen festen wert gegeben um zugucken was passiert. Er springt nach false . Wieso das ? Kommt date mit dem jahreswechsel nicht klar, also das date nicht erkennt das 2009 größer ist als 2008 ?
 
Hi,

arbeite besser mit Zeitstempeln:

PHP:
    $now = time();
    $weihnachten = strtotime( '26.12.2008 23:59:00' );
    $normal = strtotime( '30.12.2008 23:59:01' );
    $silvester = strtotime( '01.01.2009 23:59:00' );

Schau dir ausserdem mal die date()-Funktion im PHP Handbuch an.
Diese erwartet ein Datumsformat und kein fertig Datum.
 
danke das probiere ich gleich mal aus. Was meinst du mit :
Diese erwartet ein Datumsformat und kein fertig Datum.
Meinst du weil ich dort unter date ein festes Datum als test eingetragen habe ? Ich wollte halt testen ob das so funktioniert wie ich mir das vorgestellt habe.. Da ich ja nicht weiß ob er wirklich den wechsel auch vornimmt ?
 
date() erwartet numal kein Datum, sondern ein Datumsformat. (beispielsweise: d.m.Y H:i:s)
Deswegen wird dein "Test" so auch nicht funktionieren.


Wenn du nun mit Zeitstempeln rechnest, wäre beispielsweise folgendes möglich:
PHP:
    $now = strtotime( '25.12.2008 23:59:59' ); // Festes Datum zum testen
    $weihnachten_start = strtotime( '24.12.2008 23:59:59' ); // Weihnachten Start
    $weihnachten_ende = strtotime( '26.12.2008 23:59:59' ); // Weihnachten Ende
    if( $now >= $weihnachten_start
        && $now <= $weihnachten_ende )
    {
        echo 'Es ist Weihnachten!';
    }
 
ok danke alles klar. Dann lag der Fehler daran, das ich das so nicht testen konnte.

Dann müsste mein Bsp so aber auch gehen ? :
PHP:
function Logo(){
        
        $now=date("m.d.y, H:i:s");
        $weihnachtslogo="26.12.2008, 23:59:00";
        $normallogo ="30.12.2008, 23:59:00";        
        $silvesterlogo="01.01.2009, 23:59:00";        
        
        
        if($now <= $weihnachtslogo){
            $return="weihnachtslogo";
        }elseif($now <= $normallogo){
            $return="normallogo";                  
        }elseif($now <= $silvesterlogo){
            $return = "silvesterlogo";
        }else{
            $return = "false";
        }
                        
        return $return;        
    }

Genauso wie diese Variante :

PHP:
function Logo(){
        
        $now=time();
        $weihnachtslogo = strtotime( '26.12.2008 23:59:00' );
        $normallogo = strtotime( '30.12.2008 23:59:01' );
        $silvesterlogo = strtotime( '01.01.2009 23:59:00' ); 
               
        if($now <= $weihnachtslogo){
            $return="weihnachtslogo";
        }elseif($now <= $normallogo){
            $return="normallogo";                  
        }elseif($now <= $silvesterlogo){
            $return = "silvesterlogo";
        }else{
            $return = "false";
        }
                        
        return $return;        
    }

Ist ja im Prinzip das gleiche und müsste wenn ich mich nicht irre beides so funktionieren
 
Zurück