strtotime的日期函数将持续到周日,但我希望它是最近的星期日

时间:2015-10-25 15:18:35

标签: php

我有以下代码行

$sunday = date ("m/d", strtotime("last sunday"));
$saturday = date("m/d",strtotime("this saturday"));

但如果今天是星期天,今天就不会选择。本周剩余时间将会很好,因为上周日将是今天。我想这样做:

if (today is not sunday) {set to last sunday }else{ set to today }

同样适用于星期六。

修改

做一些类似的事情是可以接受的,还是有更好的方式:

$today = date('D', strtotime("today"));
if( $today === 'Sun') {
    $sunday = date ("m/d", strtotime("today"));
}else{
    $sunday = date ("m/d", strtotime("last sunday"));
}

if ( $today === "Sat"){
    $saturday =  date ("m/d", strtotime("today"));
}else{
    $saturday = date("m/d",strtotime("this saturday"));
}

2 个答案:

答案 0 :(得分:1)

我相信你真的可以自己想出来,但是......

怎么样:

function today_or_lastday ($day) {
    return date('m/d', strtotime("7 days ago")) == date('m/d', strtotime("last $day"))
        ? date('m/d', strtotime("today"))
        : date('m/d', strtotime("last $day"));
}

$sunday = today_or_lastday("sunday");
$saturday = today_or_lastday("saturday");

答案 1 :(得分:0)

我会使用这样的一行来获得最后/当前的周六和周日:

$sunday   = date( 'm/d', time() - ( date( 'w' ) * 3600*24 ) );
$saturday = date( 'm/d', time() - ( ( date( 'w' ) + 1 ) % 7 * 3600*24 ) );

星期天我们从星期日开始服用。

日期('w')给我们工作日(0 =星期日,1 =星期一,... 6 =星期六),我们减去自星期日以来过去的天数(以秒为单位计算3600 * 24)。

对于星期六我们做同样的事情,但添加一些数学技巧来调整为第6天。