Manejo de fechas con php
Publicado el 12. Ene, 2010 by jmoran 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









