Código de PHP - Obtener el primer y ultimo día de la semana mediante una fecha

Versión 1
estrellaestrellaestrellaestrellaestrella(10)

Publicado el 15 de Enero del 2014gráfica de visualizaciones de la versión: Versión 1
36.178 visualizaciones desde el 15 de Enero del 2014
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$year=2014;
$month=1;
$day=26;
 
# Obtenemos el numero de la semana
$semana=date("W",mktime(0,0,0,$month,$day,$year));
 
# Obtenemos el día de la semana de la fecha dada
$diaSemana=date("w",mktime(0,0,0,$month,$day,$year));
 
# el 0 equivale al domingo...
if($diaSemana==0)
    $diaSemana=7;
 
# A la fecha recibida, le restamos el dia de la semana y obtendremos el lunes
$primerDia=date("d-m-Y",mktime(0,0,0,$month,$day-$diaSemana+1,$year));
 
# A la fecha recibida, le sumamos el dia de la semana menos siete y obtendremos el domingo
$ultimoDia=date("d-m-Y",mktime(0,0,0,$month,$day+(7-$diaSemana),$year));
 
echo "<br>Semana: ".$semana." - año: ".$year;
echo "<br>Primer día ".$primerDia;
echo "<br>Ultimo día ".$ultimoDia;
?>



Comentarios sobre la versión: Versión 1 (10)

Raul
9 de Diciembre del 2014
estrellaestrellaestrellaestrellaestrella
Genial! Gracias
Responder
William Daza
12 de Enero del 2015
estrellaestrellaestrellaestrellaestrella
Gracias esta genial.
Responder
Jose
24 de Marzo del 2015
estrellaestrellaestrellaestrellaestrella
Muchas Gracias, Muy bueno y muy útil
Responder
Daniel
25 de Mayo del 2015
estrellaestrellaestrellaestrellaestrella
Gracias.
Responder
wladimir alejandro s
18 de Mayo del 2016
estrellaestrellaestrellaestrellaestrella
Me fue muy útil, muchas gracias :D
Responder
Marcelo Secaira (@msarco)
18 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
Otra Funcion:

public function inicio_fin_semana($fecha){

$diaInicio="Monday";
$diaFin="Sunday";

$strFecha = strtotime($fecha);

$fechaInicio = date('Y-m-d',strtotime('last '.$diaInicio,$strFecha));
$fechaFin = date('Y-m-d',strtotime('next '.$diaFin,$strFecha));

if(date("l",$strFecha)==$diaInicio){
$fechaInicio= date("Y-m-d",$strFecha);
}
if(date("l",$strFecha)==$diaFin){
$fechaFin= date("Y-m-d",$strFecha);
}

return Array("fechaInicio"=>$fechaInicio,"fechaFin"=>$fechaFin);

}
Responder
Jefferson
12 de Mayo del 2017
estrellaestrellaestrellaestrellaestrella
Cordial saludo, si quisiera sacar el primer día hábil, incluyendo de manera manual los festivos.. Cómo seria? les agradecerla mucho si me ayudaran. Tengo esto...
$fecha = new DateTime('2017-05-01');

//$fecha = new DateTime();
$fecha->modify('first day of this month');
echo $fecha->format('d');
echo $fecha->format('m');
echo $fecha->format('Y');
echo "<br>";
echo "<br>";

$fecha->modify('last day of this month');
echo $fecha->format('d');
echo $fecha->format('m');
echo $fecha->format('Y');
Responder
omar
26 de Septiembre del 2017
estrellaestrellaestrellaestrellaestrella
Saludos no se si te sirva así pero a mi me funciono, la idea era traer a partir de una fecha determinada cual era el incicio de esa semana y cual era el fin de la semana empezando en lunes y terminando en viernes lo resolvi así:

$fecha = new DateTime('2017-09-14');
$numDiaActual = $fecha->format('w');
if ($numDiaActual > 0 && $numDiaActual < 6) {
if ($numDiaActual == 1) {
$fin = 5;
} else {
$fin = 5 - $numDiaActual;
}
//Primero le sumo los dias hasta llegar al viernes
$fecha->add(new DateInterval('P'.$fin.'D'));
var_dump($fecha->format('Y-m-d'));
//Solo le resto 4 dias
$fecha->sub(new DateInterval('P4D')); //
var_dump($fecha->format('Y-m-d'));
}
Responder
23 de Febrero del 2018
estrellaestrellaestrellaestrellaestrella
Saludos:
Tengo un problema y es que quiero traer unos resultados de 7 días atrás a partir de hoy 7, es un proyecto no puedo hablar de el, pero la dinámica es la siguiente:

Cinco repartidores de periódico riegan tres tipos de periódicos en la ciudad durante la semana.

No tengo idea de como colocar en orden (DOMINGO, LUNES, MARTES, MIÉRCOLES, JUEVES, VIERNES, SÁBADO) la cantidad de periódicos repartidos durante la semana. esto es reporte que debe hacerse diario, No se si me explique bien.

el siguiente codigo hace la consulta en la tabla pero no se como organizarla.
<?php


include 'conexion.php';
$sql = mysqli_query($conect, "SELECT * FROM tabla WHERE fecha
BETWEEN CURRENT_DATE()-7 AND CURRENT_DATE() ORDER by fecha DESC");


echo '<table border="2">
<tr>
<th>Id</th>
<th>Nombre</th>
<th>Fecha</th>
<th>Periodico1</th>
<th>Periodico2</th>
<th>Periodico 3</th>
</tr>';
while ($row = mysqli_fetch_array($sql)) {
echo'<tr>
<td>'.$row ['id'].'</td>
<td>'.$row ['nombre'].'</td>
<td>'.$row ['fecha'].'</td>
<td>'.$row ['periodico1'].'</td>
<td>'.$row ['periodico2'].'</td>
<td>'.$row ['periodico3'].'</td>
</tr>';}'
</table>';


?>
Responder
Joel
13 de Noviembre del 2019
estrellaestrellaestrellaestrellaestrella
#Creamos función
function dias_semana($value){
#Fecha actual
$year=date("Y");
$month=date("m");
$day=date("d");

# Obtenemos el numero de la semana
$semana=date("W",mktime(0,0,0,$month,$day,$year));

# Obtenemos el día de la semana de la fecha dada
$diaSemana=date("w",mktime(0,0,0,$month,$day,$year));

# el 0 equivale al domingo...
if($diaSemana==0)
$diaSemana=7;

# A la fecha recibida, le restamos el dia de la semana y obtendremos el lunes
$primerDia=date("d-m-Y",mktime(0,0,0,$month,$day-$diaSemana+1,$year));

#Dias que siguen
$segundoDia=date("d-m-Y",mktime(0,0,0,$month,$day-$diaSemana+2,$year));
$tercerDia=date("d-m-Y",mktime(0,0,0,$month,$day-$diaSemana+3,$year));
$cuartoDia=date("d-m-Y",mktime(0,0,0,$month,$day-$diaSemana+4,$year));
$quintoDia=date("d-m-Y",mktime(0,0,0,$month,$day-$diaSemana+5,$year));
$sextoDia=date("d-m-Y",mktime(0,0,0,$month,$day-$diaSemana+5,$year));

# A la fecha recibida, le sumamos el dia de la semana menos siete y obtendremos el domingo
$ultimoDia=date("d-m-Y",mktime(0,0,0,$month,$day+(7-$diaSemana),$year));

#Devolvemos fecha según valores dados
if ($value == lunes) {
return $primerDia;
}elseif ($value == martes) {
return $segundoDia;
}elseif ($value == miercoles) {
return $tercerDia;
}elseif ($value == jueves) {
return $cuartoDia;
}elseif ($value == viernes) {
return $quintoDia;
}elseif ($value == sabado) {
return $sextoDia;
}elseif ($value == domingo) {
return $ultimoDia;
}else{
return '00-00-0000';
}

}

#Mostramos los dias
echo 'Lunes ' . dias_semana(lunes) . '</br>';
echo 'Martes ' . dias_semana(martes) . '</br>';
echo 'Miercoles ' . dias_semana(miercoles) . '</br>';
echo 'Jueves ' . dias_semana(jueves) . '</br>';
echo 'Viernes ' . dias_semana(viernes) . '</br>';
echo 'Sabado ' . dias_semana(sabado) . '</br>';
echo 'Domingo ' . dias_semana(domingo) . '</br>';

#En caso de valor incorrecto
echo 'Error: ' . dias_semana(error) . '</br>';
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s2584