2009-09-28 28 views
6

¿Cómo puedo obtener el domingo y el sábado de la semana con una fecha específica?PHP: ¿Cómo recibir el domingo y el sábado una entrada de fecha?

Por ejemplo:

de entrada: Lunes 28 de de septiembre de, 2009

salida debería ser:

Domingo, 27 de septiembre 2009 12:00a.m. - Sábado, 3 de octubre de, 2009 23:59

estoy pensando en usar la date, strtotime, mktime y time funciones php.

Si tiene una función utilizable, también está bien para mí.

Gracias de antemano :)

Saludos, Marcos

Respuesta

16

Se utiliza strtotime() y 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"; 
?> 

salidas:

Input: Monday, September 28, 2009 
Output: Sunday, September 27, 2009 12:00 PM - Saturday, October 3, 2009 11:59 AM 
+0

Gracias a este señor Cletus. Creo que esto es mucho más legible y más fácil de usar en mi opinión :) – marknt15

3

miren strtotime

decir

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

strtotime

$input = strtotime("Monday, September 28, 2009"); 
$nextSunday = strtotime("next Sunday",$input); 
0
<?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; 

de salida: Domingo, 27 de septiembre 2009 12:00a.m. - Sábado, 03 de octubre de, 2009 23:59

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


?> 
+0

Agradable, DateTime es relativamente nuevo, ¿no? –

+0

@meder: Disponible por defecto a partir de 5.2, lanzado a fines de 2006. Está disponible en PECL para 5.1. – Charles

1

fecha de eco ("Ymd H: i: s", "strtotime (s últimos unday ", time()));

echo date ("Y-m-d H: i: s", strtotime ("el próximo sábado", hora()));

0

Esto es lo que estás buscando. Es lo que uso

$beginningOfWeek = date('Y-m-d H:i:s', strtotime('last Sunday')); 
$endOfWeek = date('Y-m-d H:i:s', strtotime('+6 day', strtotime('last Sunday'))); 
0

Usted puede encontrar mi Fecha Hora ayudante mucho más útil en este caso, puede terminar en 3 líneas

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

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

hacia fuera puesto:

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

el tema con la respuesta "correcta" es, ¿qué ocurre si la fecha suministrada es domingo? Entonces te dará el domingo anterior, en lugar del domingo actual. Mismo problema con el sábado.

$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"; 
+0

Vine aquí en busca de este matiz: mis límites de fin de semana fueron incorrectos, por lo que usted señaló (¡y solo lo vi mientras probaba un fin de semana!). ¿Hay alguna razón por la que esté usando límites de 12pm en lugar de la medianoche (12am)? –

+0

Parece que puedo haber copiado y pegado partes de la respuesta original e hice los cambios necesarios. Aparte de eso, por el momento, no puedo pensar en ningún otro razonamiento. –

0

Get Domingo código PHP:

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