2013-08-12 4 views
0

С кодом, который у меня есть сейчас, ему удалось вернуть даты в 1969 и 1970 годах. Пример: $ endDate - 23-8-2013. День месяц год.Рассчитать дат по отношению к дате ввода

$endDte = date_create_from_format('j-n-Y', $endDate); 

echo date('Y-m-d', strtotime('-1 Sunday', strtotime($endDte))). date('Y-m-d', strtotime('+1 Saturday', strtotime($endDte))); 

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

+0

В чем вопрос? – Jon

+0

Я думаю, вам нужно будет объяснить, что вы ожидаете от «-1 Sunday». – Dave

+0

('-1 день' является допустимым синтаксисом, может быть, вы имели в виду это?) – Dave

ответ

2

date_create_from_format возвращает DateTime объекта, не строка, которую вы должны пройти через strtotime ...:

$date = date_create_from_format('j-n-Y', $endDate); 

$startdate = clone $date; 
$startdate->modify('-1 Sunday'); 

$enddate = clone $date; 
$enddate->modify('+1 Saturday'); 

echo $startdate->format('Y-m-d').' => '.$enddate->format('Y-m-d'); 
+0

Теперь, если я хочу повторить это, чтобы получить две даты, что мне делать? – Rjdlee

+0

Клонируя объект (чтобы не «уничтожить» _ ваши исходные данные), отредактировал его для вас. – Wrikken

+0

Хорошо, вы рекомендуете свой метод или Майкл Кунст? – Rjdlee

0

Я думаю, что вы ищете last sunday и next saturday, вместо -1 sunday и +1 saturday Тогда я обернуть их в функцию, пример для последнего воскресенья:

function lastSunday($ts=time(), $weeksApart=1){ 
    if(date('N', $ts) == 7){ 
    $time = $ts; 
    } else{ 
    $time = strtotime('last sunday', $ts); 
    } 
    return date('Y-m-d', strtotime('+'.$weeksApart.' weeks', $ts)); 
} 
+0

Проблема в том, что я просто тестировал с 1 воскресеньем и 1 воскресенье, но в будущем мне понадобятся такие вещи, как -3 Воскресенье. – Rjdlee

+0

см. Редактирование. Подобно этому вы можете настроить недели со вторым параметром –

+0

Какой метод вы бы порекомендовали, ваш или Wrikken? – Rjdlee

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