как получить конкретную дату с php - PullRequest
1 голос
/ 29 января 2020

Мне нужны такие даты, как даты текущей недели с понедельника по среду и даты последней недели с последней недели понедельника до последней недели среды

Я пробовал этот код

function last_to_last_week_date(){
    $previous_week = strtotime("-2 week +1 day");

    $start_week = strtotime("last monday",$previous_week);
    $end_week = strtotime("next sunday",$start_week);

    $start_week = date("Y-m-d",$start_week);
    $end_week = date("Y-m-d",$end_week);

    return $start_week.' '.$end_week ;
}
function last_week_date(){
    $previous_week = strtotime("-1 week +1 day");

    $start_week = strtotime("last monday",$previous_week);
    $end_week = strtotime("next sunday",$start_week);

    $start_week = date("Y-m-d",$start_week);
    $end_week = date("Y-m-d",$end_week);

    return $start_week.' '.$end_week ;
}

, но с этим, Я получил даты прошлой недели и даты последней или последней недели

Кто-нибудь может мне помочь с этим

1 Ответ

1 голос
/ 29 января 2020

Вы можете просто исправить 2 строки в своем коде:

$end_week = strtotime("next wednesday",$start_week);  // <-- "next wednesday"

И на текущие даты:

$previous_week = strtotime("+1 day");    

Демо

Вывод:

2020-01-20 2020-01-22
2020-01-27 2020-01-29

DRY

Вы можете упростить свой код. Используйте один метод в каждом из двух:

function optimDate($prev_w){

    $start_week = strtotime("last monday",$prev_w);
    $end_week = strtotime("next wednesday",$start_week);

    $start_week = date("Y-m-d",$start_week);
    $end_week = date("Y-m-d",$end_week);

    return $start_week.' '.$end_week ;
}

И эти два метода станут такими, как

function last_week_date(){ 
    return optimDate(strtotime("-1 week +1 day"));
}
function curr_week_date(){ 
    return optimDate(strtotime("+1 days"));
}

Демо

На самом деле, это тоже можно оптимизировать.

...