2016-03-31 9 views
-1

Ich versuche, eine Datumszeichenfolge mit einer Reihe von Regeln zurückzukehren, aber ich bin nicht in der Lage, herauszufinden, wie es einzurichten mit http://php.net/manual/en/function.date.phpPHP ein bestimmtes Datumsformat an bestimmten Tagen/Zeiten zu zeigen

Alles, was ich bin versucht, zu tun ist:

  • Wenn es Dienstag ist, aber später als 12:30 Uhr, dann zeigen Sie das Datum des kommenden Mittwochs.
  • Jederzeit und Tag vor Dienstag 12.30 das vorherige Mittwochs Datum

Beide kehren im Format dd/mm/yyyy (31/03/2016 zum Beispiel) sein sollte

+0

sollten Sie uns zeigen, was Sie bisher versucht haben, auch wahrscheinlich nicht am/pm Konvention, da es nicht wirklich international verwendet wird. (und überhaupt nicht in PHP verwendet) – Jester

+0

@Jester Eigentlich sollte ich aber alles was ich habe ist ein Date-Objekt, das im Grunde nichts ist. – Ryflex

Antwort

1

Dies sollte es tun. Lassen Sie mich wissen, ob dies für Sie funktioniert.

<?php 

date_default_timezone_set('Europe/London'); 
date_default_timezone_get(); 

$timenow = date("H:i"); 
$daynow = date("l"); 
$time = "12:30"; 
$day = "Tuesday"; 
$otherday = array("Saturday", "Sunday", "Monday"); 


if (($daynow == $day) && ($timenow > $time)) { 
    echo "Its's $day $timenow after $time and next $day will be at: " . date('Y-n-d', strtotime('next Wednesday')) . "" ; 
} elseif (($daynow == $day) && ($timenow < $time)) { 
    echo "Its's $day $timenow before $time and last $day was at : " . date('Y-n-d', strtotime('pevious Wednesday')) . "" ; 
} elseif (in_array($daynow, $otherday)) { 
    echo "Its's $daynow $timenow before $day $time and last $day was at: " . date('Y-n-d', strtotime('pevious Wednesday')) . ""; 
} else { 
    echo "Its's $daynow $timenow after $day $time and next $day will be at: " . date('Y-n-d', strtotime('next Wednesday')) . ""; 
} 

?> 

Auch Sie könnten einige Teile wegschneiden wie date_default_timezone_set('Europe/London'); oder date_default_timezone_get(); wenn alles richtig konfiguriert auf dem Server ist.

+0

können Sie leicht testen, ob Sie es richtig eingerichtet haben und Sie können Jester's Code verwenden, um die Nachricht des nächsten oder vorherigen Mittwochs anzuzeigen :) – Niels

+0

Für den Teil, der 'Echo' ist Es ist $ Tag vor $ Zeit "Sicher ersetzen, dass mit Echo-Datum ('d/m/Y', strtotime ('vorherigen Mittwoch'));' wäre richtig? Es gibt den falschen Tag zurück. – Ryflex

+0

Ich habe ein paar Änderungen vorgenommen, wird das für dich funktionieren? :) – Niels

1

Diese Arbeit sollte zeigen würde:

<?php 
    echo date('d/m/Y', strtotime('next Wednesday',strtotime("-1 week +11 hours +30 minutes"))); 
?> 

bearbeitet, war eine Stunde aus, denke ich. hier sind die 2 Testfälle:

<?php 
    echo date('d/m/Y', strtotime('next Wednesday',strtotime("-1 week +11 hours +30 minutes",strtotime('4/5/2016 12:29')))); 
    echo PHP_EOL; 
    echo date('d/m/Y', strtotime('next Wednesday',strtotime("-1 week +11 hours +30 minutes",strtotime('4/5/2016 12:30')))); 
?> 

Versuchen und mehr auf Datumsfunktion und der strtotime/strftime sie alle haben gute Anwendungen nachlesen.

+0

Jester, warum zeigt dieser Teil "-1 Woche +11 Stunden +30 Minuten" 11 Stunden, 30 Minuten. Was wäre, wenn ich die Zeit später als "20: 30" ändern möchte, würde ich das auf "-1 Woche +19 Stunden +30 Minuten" – Ryflex

+0

korrigieren, auch abhängig von der lokalen Zeit Ihres Servers, die Sie hinzufügen müssen oder subtrahieren Sie einige Stunden oder stellen Sie die Zeitzone zuerst ein, wie in der Antwort von Niels van Osch beschrieben. Mit den letzten 2 Zeilen – Jester

Verwandte Themen