2016-06-14 34 views
0

我需要得到昨天的日期才能顯示市場收盤日期。這僅適用於週一至週五,因爲市場週末不開放。使用這種格式我該怎麼做?PHP得到昨天的日期除非週末

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

'日期( 「W」)'會給你一週的數字一天(0〜6)。從那裏你可以寫出一個有條件的工作日。 – jszobody

回答

0

您可以查看本週的當天是date('w')。 注意,週日是0,和星期六是6

有了這樣的信息,你可以這樣做:

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

基本上,如果它是一個週末,你問的最後一個星期五,否則,你問PHP爲昨天。

如果你沒有在一行喜歡:

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

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

在我們今天的情況下,Tuesday, June 14th 2016,它將返回2016-06-13

有關日期函數的詳細信息:http://php.net/manual/en/function.date.php

+0

謝謝,我喜歡單行選項。非常豐富。 –

+0

@WillLong沒問題。你介意把這個標記爲答案嗎? :) –

+0

是的標記。再次感謝你。在和我的客戶交往之後,如果週一是星期一,我也需要看星期五,所以我調整了這樣的線...... $ yesterday = strtotime(date('w')== 0 | | strtotime(date('w')== 1 || date('w')== 6?'last friday':'yesterday'); echo date('Ym-d',$ yesterday); 這是正確的嗎? –

2

下面是做這件事:

$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'); 

我只是得到今天的日期,減去一天,檢查,看它是否是一個星期天。如果是這樣,減去一天。然後我在星期六做同樣的事情。最終你會在最後一個工作日結束。

請記住,這是不同的工作日,因爲那個星期五可能是假期,市場可能會被關閉。

相關問題