2016-06-14 8 views
0

Ich brauche das gestrige Datum, um das Marktschlussdatum zu zeigen. Dies gilt nur von Montag bis Freitag, da die Märkte am Wochenende nicht geöffnet sind. Wie würde ich dieses Format verwenden?PHP Get Yesterdays Datum, es sei denn, Wochenende

<?php 
$yesterday = date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")-1,date("Y"))); 
echo $yesterday; 
?> 
+2

'date ("w")' geben Sie den numerischen Tag der Woche (0 bis 6). Von dort können Sie eine Bedingung für nur Wochentage schreiben. – jszobody

Antwort

0

Sie können überprüfen, welcher Tag der aktuelle Wochentag mit date('w') ist. Bitte beachte, dass Sonntag 0, und Samstag 6.

Und mit dieser Information können Sie tun:

$yesterday = strtotime(date('w') == 0 || date('w') == 6 ? 'last friday' : 'yesterday'); 
echo date('Y-m-d', $yesterday); 

Grundsätzlich, wenn es ein Wochenende ist, fragen Sie nach dem letzten Freitag, sonst, fragen Sie PHP für gestern.

Wenn Sie es nicht in einer Zeile wie:

$w = date('w'); 
if($w == 0 || $w == 6) 
    $yesterday = strtotime('last friday'); 
else 
    $yesterday = strtotime('yesterday'); 

$yesterday = date('Y-m-d', $yesterday); 

In unserem Fall heute Tuesday, June 14th 2016, wird es 2016-06-13 zurück.

Weitere Informationen über die Datumsfunktion: http://php.net/manual/en/function.date.php

+0

Danke, ich mag die Ein-Zeilen-Option. Sehr informativ. –

+0

Kein Problem @WillLong. Würde es Ihnen etwas ausmachen, dies bitte als Antwort zu markieren? :) –

+0

Ja markiert. Nochmals vielen Dank Chin. Nachdem ich mit meinem Kunden darüber gesprochen habe, muss ich auch auf Freitag schauen, wenn es auch ein Montag ist, also passe ich die Linie als solche an ... $ gestern = strtotime (Datum ('w') == 0 | | strtotime (Datum ('w') == 1 || Datum ('w') == 6? 'letzter Freitag': 'gestern'); Echo-Datum ('Ym-d', $ gestern); Ist das richtig? –

2

Hier ist eine Möglichkeit, es zu tun:

$date= new \DateTime(); 
$oneDay = new \DateInterval('P1D'); 
$date->sub($oneDay); 
if ('Sunday' === $date->format('l')) { 
    $date->sub($oneDay); 
} 
if ('Saturday' === $date->format('l')) { 
    $date->sub($oneDay); 
} 
echo $date->format('Y-m-d'); 

ich nur das heutige Datum bekommen, ein Tag subtrahieren, und überprüfen, um zu sehen, ob es ein Sonntag ist. Wenn ja, subtrahieren Sie einen Tag. Dann mache ich dasselbe für einen Samstag. Letztendlich enden Sie mit dem letzten Wochentag.

Denken Sie daran, dies ist anders als Werktag, da der Freitag ein Feiertag sein kann und die Märkte geschlossen sein können.

Verwandte Themen