Manejo de fechas con php
Publicado el 12. ene, 2010 by jbomba in PHP
El manejo de las fechas en php a veces suele ser un poco tedioso cuande deseas obtener el rango de dias dado una semana a veces es hasta mas complejo, aqui te presento un pequeño script que realize cuando necesitaba encontrar el dia de inicio y el dia final de dicha semana, espero les pueda servir, cualquier comentario o sugerencia es bien recibido
class ManageDate
{
private $timestamp = '';
public $number_week = '';
public $month = '';
public $year = '';
public $format = 'Y-m-d';
private $dias = array('Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo');
public function __construct(){
if(empty($this->year))
$this->year = date('Y');
if(empty($this->number_week))
$this->number_week = date('W');
if(empty($this->month))
$this->month = date('m');
}
public function DayStartWeek(){
$this->timestamp = strtotime('+' . $this->number_week . ' weeks', strtotime($this->year . '0101'));
$date_m = strtotime('-' . date('w', $this->timestamp) + 1 . ' days', $this->timestamp);
return date($this->format, $date_m);
}
public function DayEndWeek(){
return date($this->format, strtotime('+6 days', strtotime( $this->DayStartWeek() )));
}
public function LastDayMonth(){
$last = strftime("%d", mktime(0, 0, 0, $this->month+1, 0, $this->year));
$lastday = $last.'-'.$this->month.'-'.$this->year;
return date($this->format, strtotime($lastday));
}
public function RestarDias($num, $day){
return date($this->format, strtotime("-{$num} days", strtotime( $day )));
}
public function SumarDias($num, $day){
return date($this->format, strtotime("+{$num} days", strtotime( $day )));
}
public function getDiaWeek($day=''){
$val = ($day=='') ? date($this->format) : $day;
$bool = date('N',strtotime($val));
return $this->dias[$bool-1];
}
}
Obtener el dia y fin de esta semana
//Inicializamos $date = new ManageDate(); //Obtenemos el dia que inicia esta semana $day_start = $date->DayStartWeek(); //Obtenemos el dia que finaliza esta semana $day_end = $date->DayEndWeek(); //Obtenemos el ultimo dia de este mes
Obtener el inicio y fin de la semana siguiente
//Inicializamos
$date = new ManageDate();
//Seteamos el valor de number_week a la semana siguiente
$date->number_week = date('W')+1;
//Obtenemos el dia que inicia la semana siguiente
$day_start = $date->DayStartWeek();
//Obtenemos el dia que finaliza la semana siguiente
Sumar dias a la fecha dada
//Inicializamos $date = new ManageDate(); //Obtenemos el dia que inicia la semana $day_start = $date->DayStartWeek(); //le agregamos 3 dias a la fecha en que inicia la semana $dia_inicial_mas_3_dias = $date->SumarDias(3,$day_start);
Restar dias a la fecha dada
//Inicializamos $date = new ManageDate(); //Obtenemos el dia que inicia la semana $day_start = $date->DayStartWeek(); //le restamos 3 dias a la fecha en que inicia la semana $dia_inicial_menos_3_dias = $date->RestarDias(3,$day_start);
El ultimo dia del mes
//Inicializamos $date = new ManageDate(); //Seteamos el formato en que devuelve nuestras fechas $date->format = 'd M Y'; //Seteamos el valor del año a 1982 $date->year = 1982; //Seteamos el valor del mes a febrero - 02 $date->month = 02; //ultimo dia de febro de 1982 es 28 Feb 1982 $ultimo_dia_febrero_1982 = $date->LastDayMonth();
Dia de semana en q cayo la fecha
//Inicializamos
$date = new ManageDate();
//el 23-5-1982 cayo Domingo
$dia_semana = $date->getDiaWeek('23-05-1982');
//si se omite el parametro se toma el dia de hoy
$hoy_es = $date->getDiaWeek();
Obviamente este script se puede mejorar e ir añadiendole metodos al manejo de fechas pero por el momento eso fue lo que necesite para realizar mi trabajo, espero les sirva de ayuda





Daniel Florez
30. abr, 2010
Hey gracias el script esta exelente y me sirvio demasiado
para mi aplicacion muchas horas navegando hasta q encontre lo que necesitaba gracias
jmoran
03. may, 2010
Gracias Hermano por tu comentario, me alegro que te alla servido