Desarrollo web y Marketing Digital

Artículos
Inicio

Trabajar con fechas en php-Formatear datos datetime con funciones php

En el siguiente post voy a proceder a indicar como podemos formatear las fechas en diferentes idiomas usando la función Date la cual podemos encontrar en el siguiente enlace con su correspondiente documentación y opciones. Función Date en php.net Un ejemplo sobre el uso básico de la función sería el siguiente:

Para conseguir el objetivo de traducir nuestra fecha lo mejor es usar la función setlocale que establecerá la configuración regional que nosotros le procedamos a indicarle al sistema, en el siguiente link podemos estudiar las distintas opciones que hay para poder dejar los datos como nosotros queremos. Ver función Setlocale

setlocale(LC_ALL,"es_ES");
echo strftime("%A %d de %B del %Y");

//Salida: viernes 24 de febrero del 2012
Podemos tener el problema de que nuestro servidor no soporte esta función por versión del servidor php otra opción sería trabajar de la siguiente manera de que vamos a indicar. La idea general es usar el comando date obteniendo los valores que necesitamos y decirle en el array que valores tiene que coger.Esta sería una manera simple.
$dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");

echo $dias[date('w')]." ".date('d')." de ".$meses[date('n')-1]. " del ".date('Y') ;
Otra forma mas complicada en casa de no funcionar setlocale y que nos lo permite pasar a cada idioma en concreto sería haciendo una función que nos pasase directamente del inglés al idioma que queramos pasar en el siguiente ejemplo.Pasariamos la fecha en la función y alli se sustiuiria la fecha que pasamos cogiendo cada uno de los valores, y luego mediante los array se sustituirian los valores del uno por el otro.
function fechaCastellano ($fecha) {
  $fecha = substr($fecha, 0, 10);
  $strtimefecha=strtotime($fecha);
  $numeroDia = date('d', strtotime($fecha));
  $dia = date('l', strtotime($fecha));
  $mes = date('F', strtotime($fecha));
  $anio = date('Y', strtotime($fecha));
  $dias_spanish = array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");
  $dias_english = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
  $nombredia = str_replace($dias_english,$dias_spanish, $dia);
$meses_ES = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
  $meses_EN = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
  $nombreMes = str_replace($meses_EN, $meses_ES, $mes);
  return $nombredia." ".$numeroDia." de ".$nombreMes." de ".$anio;
}
$miFecha = "30-04-2016 04:20:00";
$valor_devuelto_fecha=fechaCastellano($miFecha);

En el ejemplo usamos strtotime que pasa la cadena a tiempo esta función puede ser útil a la hora de comparar fecha como por ejemplo se muestra en este ejemplo sencillo.

$fecha_actual = strtotime(date("d-m-Y H:i:00",time()));
$fecha_entrada = strtotime("10-12-2018 21:00:00");

if($fecha_actual > $fecha_entrada)
	{
	echo "La fecha actual es mayor a la comparada.";
	}else
		{
		echo "La fecha comparada es igual o menor";
		 if ($fecha_actual==$fecha_entrada){echo "las fechas son iguales";}
		}

Finalmente con este último ejemplo damos por terminado el artículo