Как я могу получить воскресенье и субботу недели с определенной датой?
Например:
вход: понедельник, 28 сентября 2009 г.
выход должен быть:
Воскресенье, 27 сентября 2009 г. 12:00 – Суббота, 3 октября 2009 г. 23:59
Я думаю использовать функции date
, strtotime
, mktime
и time
php.
Если у вас есть полезная функция, то это тоже хорошо.
Заранее спасибо 🙂
Приветствия, Марк
Вы используете strtotime()
и date()
:
<?php $s = 'Monday, September 28, 2009'; $time = strtotime($s); $start = strtotime('last sunday, 12pm', $time); $end = strtotime('next saturday, 11:59am', $time); $format = 'l, F j, Y g:i A'; $start_day = date($format, $start); $end_day = date($format, $end); header('Content-Type: text/plain'); echo "Input: $s\nOutput: $start_day - $end_day"; ?>
выходы:
Input: Monday, September 28, 2009 Output: Sunday, September 27, 2009 12:00 PM - Saturday, October 3, 2009 11:59 AM
<?php date_default_timezone_set('Europe/London'); $datetime = new DateTime("2009-09-23 12:00:00"); // Saturday $datetime->setISODate(2009, $datetime->format("W"), 6); print "Saturday:" . $datetime->format(DATE_ATOM) . "\n"; // Sunday $datetime->setISODate(2009, $datetime->format("W"), 0); print "Sunday: " . $datetime->format(DATE_ATOM) . "\n"; ?>
взглянуть на strtotime
т.е.
strtotime('next sunday', strtotime($your_date_string));
echo date («Ymd H: i: s», strtotime («последнее воскресенье», время ()));
echo date («Ymd H: i: s», strtotime («следующая суббота», время ()));
проблема с «правильным» ответом заключается в том, что, если поставляемая дата – воскресенье? Тогда это даст вам предыдущее воскресенье вместо текущего воскресенья. Тот же вопрос с субботой.
$s = 'Monday, September 28, 2009'; $time = strtotime($s); if(date('D', $time) == "Sun"){ $start = strtotime(' 12pm', $time); } else { $start = strtotime('last sunday, 12pm', $time); } if(date('D', $time) == "Sat"){ $start = strtotime(' 12pm', $time); } else { $start = strtotime('next saturday, 12pm', $time); } $format = 'l, F j, Y g:i A'; $start_day = date($format, $start); $end_day = date($format, $end); header('Content-Type: text/plain'); echo "Input: $s\nOutput: $start_day - $end_day";
StrToTime
$input = strtotime("Monday, September 28, 2009"); $nextSunday = strtotime("next Sunday",$input);
<?php $date = strtotime('Monday, September 28, 2009 - 1 day'); $initialString = date('l, F d, Y g:i A', $date); $end = date('l, F d, Y g:i A', strtotime( 'next saturday 11:59 pm', $date)); echo $initialString . ' - ' . $end;
выход: воскресенье, 27 сентября 2009 г. 12:00 – суббота, 03 октября 2009 г. 23:59
Это то, что вы ищете. Это то, что я использую.
$beginningOfWeek = date('Ymd H:i:s', strtotime('last Sunday')); $endOfWeek = date('Ymd H:i:s', strtotime('+6 day', strtotime('last Sunday')) );
В этом случае вы можете найти мой помощник Time Time Helper, он может закончиться в 3 строки
http://normandqq.github.io/Date-Time-Helper/
$date = '2013-08-11'; $monday = Model_DTHpr::getMondayByDate($date); $sunday = Model_DTHpr::adjustDays("add",$monday,6);
Вывод:
2013-08-05 //Monday 2013-08-11 //Sunday
Получите воскресный код Php:
echo "Today Is : " . date("dmY"); $dw = date( "w"); $dw = 7-$dw; echo "\nNext Sunday Is" .date('dm-Y', strtotime("+$dw days"));