PHP: come get domenica e sabato dato un input di data?

Come posso get la domenica e il sabato della settimana in base a una data specifica?

Per esempio:

input: lunedì 28 settembre 2009

l'output dovrebbe essere:

Domenica, 27 settembre 2009 12:00 AM – Sabato 3 ottobre 2009 23:59

Sto pensando di usare le strtotime date , strtotime , mktime e time php.

Se hai una function utilizzabile, allora va bene anche per me.

Grazie in anticipo 🙂

Saluti, Marco

Usa strtotime() e 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"; ?> 

uscite:

 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"; ?> 

dai un'occhiata a strtotime

vale a dire

 strtotime('next sunday', strtotime($your_date_string)); 

data dell'eco ("Ymd H: i: s", strtotime ("ultima domenica", ora ()));

data dell'eco ("Ymd H: i: s", strtotime ("prossimo sabato", ora ()));

il problema con la risposta 'corretta' è, e se la data fornita è domenica? Quindi ti darà la domenica precedente, invece della domenica corrente. Stesso problema con sabato.

 $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; 

output: domenica 27 settembre 2009 00:00 – sabato 3 ottobre 2009 23:59

Questo è quello che stai cercando. È quello che uso.

 $beginningOfWeek = date('Ymd H:i:s', strtotime('last Sunday')); $endOfWeek = date('Ymd H:i:s', strtotime('+6 day', strtotime('last Sunday')) ); 

Puoi trovare il mio Date Time Helper molto utile in questo caso, può finire in 3 linee

http://normandqq.github.io/Date-Time-Helper/

  $date = '2013-08-11'; $monday = Model_DTHpr::getMondayByDate($date); $sunday = Model_DTHpr::adjustDays("add",$monday,6); 

Produzione:

  2013-08-05 //Monday 2013-08-11 //Sunday 

Ottieni il codice PHP di domenica:

 echo "Today Is : " . date("dmY"); $dw = date( "w"); $dw = 7-$dw; echo "\nNext Sunday Is" .date('dm-Y', strtotime("+$dw days"));