2016-06-26 4 views
-1

Как я могу получить Date of Monday и Date of Sunday, если у меня есть конкретная дата в mysqlDATETIME формате?PHP Как получить дату понедельника и воскресенья недели, в которую выпадает данная дата?

Я пытаюсь получить дату первого дня недели и дату последнего дня, в которой данная дата падает.

У меня есть дата '2016-06-05' его в 'Y-m-d' , и я стараюсь, как этот путь.

<?php 
$date = '2016-06-05'; 
echo date("Y-m-d", strtotime('monday this week', strtotime($date))), "\n"; 
echo date("Y-m-d", strtotime('sunday this week', strtotime($date))), "\n"; 
?> 

но его предоставление

2016-06-06 
2016-06-12 

, который неправильно неделю, она должна дать

2016-05-30 
2016-06-05 

я даже пытался, как таким образом.

$date = '2016-06-05'; 
echo date("Y-m-d", strtotime('monday', strtotime('this week', strtotime($date)))), "\n"; 
echo date("Y-m-d", strtotime('sunday', strtotime('this week', strtotime($date)))), "\n"; 

ИЛИ

$date = '2016-06-05'; 
echo date("Y-m-d", strtotime('monday', strtotime($date))), "\n"; 
echo date("Y-m-d", strtotime('sunday', strtotime($date))), "\n"; 

с помощью PHP 5.3

что я здесь отсутствует?


UPDATE:

я придумал это, это дает ожидаемый результат.

function get_monday_sunday($date){ 
$dates_array = array(); 

    if(date('N', strtotime($date)) == 7){ 

    $dates_array['monday'] = date("Y-m-d", strtotime('Monday last week', strtotime($date))); 
    $dates_array['sunday'] = date("Y-m-d", strtotime('Sunday last week', strtotime($date))); 

    }else{ 

    $dates_array['monday'] = date("Y-m-d", strtotime('Monday this week', strtotime($date))); 
    $dates_array['sunday'] = date("Y-m-d", strtotime('Sunday this week', strtotime($date))); 
    } 
return $dates_array; 
} 

$date = '2016-06-05' 
print_r(get_monday_sunday($date)); 

выглядит, когда день последний день недели, а затем на следующей неделе начинается сначала, то есть PHP начала недели является воскресенье я думаю.

+0

эхо-дата («Y-m-d», strtotime ('sunday last week', strtotime ($ date))), "\ n"; потому что воскресенье - последний день недели в php – splash58

+0

спасибо, у меня много дат, так это будет работать на любую заданную дату? – AMB

+0

Я не уверен, что воскресенье 1-го или последнего дня не задано конфигурацией сервера. Но в вашем текущем окружении он будет работать – splash58

ответ

3

В каждом проекте php, который я делаю, я всегда включаю пакет Carbon. Он расширяет класс DateTime и добавляет очень приятную функциональность, что упрощает работу с датами.

Если бы мое предложение, ваш код будет выглядеть примерно так:

$date = Carbon::parse($dateStringFromDb); 
echo $date->startOfWeek()->format('Y-m-d'); // monday 
echo $date->endOfWeek()->format('Y-m-d'); // sunday 

И что на самом деле все есть на него. Это то, что я называю «код комментирования»! Бьюсь об заклад, вы на самом деле собираетесь пользоваться программой с датами ;-)

+0

спасибо, плохо посмотри на него, на данный момент я придумал уродливое решение. – AMB

Смежные вопросы