Antworten auf deine Fragen:
Neues Thema erstellen

Text Uhrzeitbezogen ersetzen

H

Hagbard_Celine

Guest

Ich möchte zu bestimmten Uhrzeiten einen spezifischen Text ausgeben.
Dazu habe ich folgenden PHP-Code:
PHP:
<?php

   $uhrzeit = date('H');

   if($uhrzeit >= 3 && $uhrzeit < 12)
   {
         echo 'Guten Morgen';
   }
   elseif($uhrzeit >= 12 && $uhrzeit < 18)
   { 
         echo 'Guten Tag';    
   }
   elseif($uhrzeit >= 18 && $uhrzeit < 22)
   { 
         echo 'Guten Abend';    
   }
   elseif($uhrzeit >= 22 && $uhrzeit < 3)
   { 
         echo 'Gute Nacht';   
   }

?>
Leider wurde gestern abend nach 22:00 gar nichts ausgegeben :(

Wo liegt da der Fehler?
 

K

kyle66

Guest

AW: Text Uhrzeitbezogen ersetzen

Hallo,

naja, wenn's 23 Uhr ist, dann ist $uhrzeit < 3 natürlich falsch, du solltest also lieber schreiben
elseif($uhrzeit >= 22 || $uhrzeit < 3)

Grüße
kyle
 
H

Hagbard_Celine

Guest

AW: Text Uhrzeitbezogen ersetzen

Hallo,

naja, wenn's 23 Uhr ist, dann ist $uhrzeit < 3 natürlich falsch, du solltest also lieber schreiben
elseif($uhrzeit >= 22 || $uhrzeit < 3)

Grüße
kyle

Vielen Dank ich probiere das mal aus.
Muss man die zwei || nur in dem Zeitraum zwischen 22:00 - 03:00 setzen, oder bei allen Angaben?

Gruß Hagbard
 

Aelfry

Web Developer

AW: Text Uhrzeitbezogen ersetzen

ich würde statt dem letzten elseif folgendes schreiben

PHP:
   else 
   {  
         echo 'Gute Nacht';    
   }

Dann ist es sauberer, weil weniger Code und gleichzeitig bekommst du dadurch immer etwas angezeigt.
 

MegaAdi

Freak

AW: Text Uhrzeitbezogen ersetzen

Wie Aelfry schon schrieb würde ich auch die letzte elseif-Abfrage nur mit else ausgeben lassen... generell würde ich aber sogar das "Gute Nacht" komplett weglassen weil das klingt so wie "geh ins bett" :p Guten Abend kann man genauso um 23:00 noch sagen. (mach ich zumindest imemr..)

du kannst es aber noch einfacher machen.. du musst nicht immer 2 Sache abfragen..
machs doch so:

spart 1. Platz und istb 2. viel übersichtlicher ;)

PHP:
<?php

$time = date("G");
if($time >= 3) echo "Guten Morgen";
elseif($time >= 12) echo "Guten Tag";
else echo "Guten Abend";

?>


Gruß Adrian
 
Zuletzt bearbeitet:
H

Hagbard_Celine

Guest

Super vielen Dank Euch beiden :)

LG Hagbard

Oh - Adrian, Deinen Post sehe ich erst jetzt!

Ja Du hast recht - „Gute Nacht“ klingt nicht so toll.

Vielen Dank für den kurzen und viel schöner aussehenden Code
 
Zuletzt bearbeitet von einem Moderator:

Duddle

Posting-Frequenz: 14µHz

AW: Text Uhrzeitbezogen ersetzen

spart 1. Platz und istb 2. viel übersichtlicher ;)

PHP:
<?php

$time = date("G");
if($time >= 3) echo "Guten Morgen";
elseif($time >= 12) echo "Guten Tag";
else echo "Guten Abend";

?>

Und es ist 3. falsch. Das erste if greift bei allen Zahlen größer 3. 12 ist größer als 3. Auch 13, 14, usw. Deshalb wird bei allen $time >= 3 "Guten Morgen" ausgegeben. Das ist klar falsch.

Wenn du es andersrum aufziehst, funktioniert die Logik:
PHP:
    if($time >= 22) echo "Guten Abend";
    elseif($time >= 10) echo "Guten Tag";
    elseif($time >= 5) echo "Guten Morgen";
    else echo "Guten Abend";
Das ist aber subjektiv etwas schwerer zu verstehen und es wiederholt das "Guten Abend".


Duddle
 
H

Hagbard_Celine

Guest

AW: Text Uhrzeitbezogen ersetzen

Danke Dir Duddle, das ist interessant!
Werde ich definitiv ausprobieren :)

Gruß Hagbard
 
H

Hagbard_Celine

Guest

So jetzt habe ich das mal getestet, aber es funktioniert noch nicht richtig.
Mit diesem Code:
PHP:
if($time >= 22) echo "Guten Abend"; 
    elseif($time >= 10) echo "Guten Tag"; 
    elseif($time >= 5) echo "Guten Morgen"; 
    else echo "Guten Abend";
wird am Nachmittag also jetzt „Guten Abend“ ausgegeben.

Ich revidiere, habe beim copy & paste einen Fehler gemacht und diesen Teil:
PHP:
$time = date("G");
ausgelassen, jetzt scheint es zu funktionieren!
 
Zuletzt bearbeitet von einem Moderator:

MegaAdi

Freak

AW: Text Uhrzeitbezogen ersetzen

klar Duddle... hab falsch herum gedacht.. so wollt ichs eigentlich auch schreiben ;) danke für die Korrektur!

Edit: Das zweimal guten Abend könnte man auch umgehen in dem man beim if abfrägt ob die Uhrzeit entweder größer gleich 22 ist oder kleiner gleich3... also:

if($time >= 22 || $time<3) echo "Guten Abend";

Adrian
 
Zuletzt bearbeitet:
H

Hagbard_Celine

Guest

AW: Text Uhrzeitbezogen ersetzen

Edit: Das zweimal guten Abend könnte man auch umgehen in dem man beim if abfrägt ob die Uhrzeit entweder größer gleich 22 ist oder kleiner gleich3... also:

if($time >= 22 || $time<3) echo "Guten Abend";

Dann würde die letzte Zeile wegfallen? Also so?
PHP:
<?php

$time = date("G");
if($time >= 22 || $time<3) echo "Guten Abend";
elseif($time >= 10) echo "Guten Tag"; 
elseif($time >= 5) echo "Guten Morgen"; 

?>

Fragend, Hagbard
 

MegaAdi

Freak

AW: Text Uhrzeitbezogen ersetzen

Mein Fehler... Richtig! Ich hab nich mitbekommen dass aus 3 Uhr mittlerweile 5 Uhr ist. dann muss es ja natürlich if($time >= 22 || $time<5) echo "Guten Abend";
 
H

Hagbard_Celine

Guest

AW: Text Uhrzeitbezogen ersetzen

Aber ansonsten die letzte Zeile weglassen, so wie ich es oben geschrieben ja?
 

kleinerVampir

Aktives Mitglied

AW: Text Uhrzeitbezogen ersetzen

Da hast du aber ein paar Probleme drin

PHP:
if($time >= 22 || $time < 3) echo "Guten Abend";
Wenn die Zeit größer wie 22 oder gleich 22 oder kleiner wie 3 ist sag "Guten Abend"

Also sagt er um 22, 23 , 0 , 1 und 2 Uhr guten Abend


PHP:
elseif($time >= 10) echo "Guten Tag";

Wenn die Zeit größer wie 10 ist sag Guten Tag

Also sagt er um 11 , 12, 13, ... , 23 Uhr Guten Tag
Da er aber ab 22 Uhr Guten Abend sagen soll ist das ehr schlecht

PHP:
elseif($time >= 5) echo "Guten Morgen";

Gleiches Problem hier
Wenn es nach 5 Uhr ist sag Guten Morgen. Also auch um 23 Uhr noch ... weil ist ja nach 5


Was ist aber mit der Zeit zwischen 3 und 5 Uhr ? Die findet garkeine Berücksichtigung.


Ich würde es wie folgt lösen:


0 Uhr fängt ein neuer Tag an - also ab 0 Uhr Guten Morgen und zwar bis 12 Uhr

Von 12 - 18 Uhr Guten Tag

und von 18 - 23 Uhr Guten Abend

im Code würde das so aussehen

PHP:
<?php

$zeit = date('G');

if ($zeit >= 0) && ($zeit < 12) {
echo "Guten Morgen";
}
elseif ($zeit >= 12) && ($zeit < 18) {
echo "Guten Tag";
}
elseif ($zeit >= 18) && ($zeit <= 23) { 
echo "Guten Abend";
}

?>
 

cebito

undefined

AW: Text Uhrzeitbezogen ersetzen

vampirle, du vergisst, das der else-Zweig immer nur dann greift, wenn if false ergibt, bei true wird die Anweisung ausgeführt und die Abfrage verlassen.
 
Zuletzt bearbeitet:

kleinerVampir

Aktives Mitglied

AW: Text Uhrzeitbezogen ersetzen

vampirle, du vergisst, das der else-Zweig immer nur dann greift, wenn if false ergibt, bei true wird die Anweisung ausgeführt und die Abfrage verlassen.

genau das was wir wollen oder ?

nehmen wir

PHP:
$zeit = date('G');

die aktuelle Stunde wird ohne führende Nullen an die Variable $zeit übergeben

nehmen wir an $zeit = 20

jetzt passiert folgendes

PHP:
if ($zeit >= 0) && ($zeit < 12) {
echo "Guten Morgen";
}

ist $zeit größer oder gleich 0 und $zeit ist kleiner als 12 dann gib "Guten Morgen" aus

da $zeit aktuell aber 20 ist, ist die Bedingung nicht erfüllt also $false

jetzt greift

PHP:
elseif ($zeit >= 12) && ($zeit < 18) {
echo "Guten Tag";
}

ist die $zeit größer oder gleich 12 und die $zeit ist kleiner wie 18 dann sag "Guten Tag"

unsere Zeit ist aber 20 also wieder $false

nun greift

PHP:
elseif ($zeit >= 18) && ($zeit <= 23) { 
echo "Guten Abend";
}

ist die $zeit größer oder gleich 18 und die $zeit ist kleiner oder gleich 23 dann sag "Guten Abend"

da unsere Zeit 20 ist, erfüllt sie das Schema, also $true und der echo Befehl wird ausgeführt


....ich weiß (oder sagen wir denke mir) dass ich dir das nicht erklären muss. Aber der Allgemeinen Verständlichkeit halber habe ich das nochmal aufgeschlüsselt.

So jetzt stoß mich mal darauf, was an meiner Version da so falsch sein soll. Hab ich wirklich gerade einen Blackout ?!? Falls ja - ich lass mich gerne eines besseren Belehren.
 

cebito

undefined

AW: Text Uhrzeitbezogen ersetzen

Ich glaub, du hast da grad 'ne Brille auf, ich mein deine obige Zerlegung des anderen Codes (das Problem mit der 3 mal ausgenommen, weil es in vorigen Beiträgen schon berichtigt wurde)

PHP-Code:
if($time >= 22 || $time < 3) echo "Guten Abend";

Wenn die Zeit größer wie 22 oder gleich 22 oder kleiner wie 3 ist sag "Guten Abend"

Also sagt er um 22, 23 , 0 , 1 und 2 Uhr guten Abend
soweit liegst du richtig, aber

PHP-Code:
elseif($time >= 10) echo "Guten Tag";

Wenn die Zeit größer wie 10 ist sag Guten Tag

Also sagt er um 11 , 12, 13, ... , 23 Uhr Guten Tag
Da er aber ab 22 Uhr Guten Abend sagen soll ist das ehr schlecht
Warum sollte diese Anweisung nach 22:00Uhr greifen? Da wir in der ersten Abfrage schon eine Uhrzeit später oder gleich 22:00 bzw. früher 3:00 festgestellt haben, warum sollte dieser Abfragezweig noch angesteuert werden? Natürlich würde die Anweisung auch für Zeiten nach 22:00 gelten, doch ich komme nie hierhin, wenn es denn wirklich schon so spät ist. Für die Fortsetzung der obigen Analyse gilt dasselbe.
 
Zuletzt bearbeitet:
H

Hagbard_Celine

Guest

AW: Text Uhrzeitbezogen ersetzen

Mal eine kleine Zwischenmeldung meinerseits :)
Mit diesen Code:
PHP:
<?php

$time = date("G");
if($time >= 22 || $time<5) echo "Guten Abend";
elseif($time >= 10) echo "Guten Tag"; 
elseif($time >= 5) echo "Guten Morgen"; 

?>
wird ab 22:00 „Guten Abend“ angezeigt

Leider glaube ich nicht das ich morgen früh um 05:00 kontrollieren werde können ob ab dann auch „Guten Morgen“ angezeigt werden wird 8)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben