Cómo mostrar la Fecha en formato Español con PHP


Desarrollando un periódico digital WordPress para un cliente de España, me surgió la necesidad de mostrar la fecha actual en pantalla.

Nota: recuerda que tu también puedes contratarme para desarrollar tu página web!
>> Mira aquí mis plantillas disponibles
(puedes encontrar plantillas para diferentes tipo de negocios (computadoras, electrónica, moda, perfumería, etc).

O contactame aquí para sistemas a medida

Pero como ya sabemos, las funciones date() y time() devuelven resultados en idioma inglés. Por ejemplo, si queremos mostrar el día actual nos aparece Saturday, Sunday, Monday, etc. Pero nosotros necesitamos que diga Sábado, Domingo, Lunes, etc…

Les comparto aquí una función php para mostrar la fecha en idioma español que encontré en el sitio snipplr.com

function get_date_spanish( $time, $part = false, $formatDate = '' ){    #Declare n compatible arrays    $month = array("","enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiempre", "diciembre");#n    $month_execute = "n"; #format for array month    $month_mini = array("","ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "DIC");#n    $month_mini_execute = "n"; #format for array month    $day = array("domingo","lunes","martes","miércoles","jueves","viernes","sábado"); #w    $day_execute = "w";        $day_mini = array("DOM","LUN","MAR","MIE","JUE","VIE","SAB"); #w    $day_mini_execute = "w";/*Other examples:    Whether it's a leap year    $leapyear = array("Este año febrero tendrá 28 días"."Si, estamos en un año bisiesto, un día más para trabajar!"); #l     $leapyear_execute = "L";*/    #Content array exception print "HOY", position content the name array. Duplicate value and key for optimization in comparative    $print_hoy = array("month"=>"month", "month_mini"=>"month_mini");    if( $part === false ){        return date("d", $time) . " de " . $month[date("n",$time)] . ", ". date("H:i",$time) ." hs";    }elseif( $part === true ){        if( ! empty( $print_hoy[$formatDate] ) && date("d-m-Y", $time ) == date("d-m-Y") ) return "HOY"; #Exception HOY        if( ! empty( ${$formatDate} ) && !empty( ${$formatDate}[date(${$formatDate.'_execute'},$time)] ) ) return ${$formatDate}[date(${$formatDate.'_execute'},$time)];        else return date($formatDate, $time);    }else{        return date("d-m-Y H:i", $time);    }}

Se las recomiendo porque funciona muy bien y, principalmente es muy sencilla de utilizar. Simplemente deben copiar y pegar ese código en su scripts y luego pueden mostrar la fecha mediante la simple sentencia:

echo get_date_spanish(time());

Y el resultado en pantalla será la fecha actual con el siguiente formato:

19 DE ABRIL, 14:37 HS

Para más info sobre fechas en PHP, te invito a nuestros artículos previos:

Nota: recuerda que tu también puedes contratarme para desarrollar tu página web!
>> Mira aquí mis plantillas disponibles
(puedes encontrar plantillas para diferentes tipo de negocios (computadoras, electrónica, moda, perfumería, etc).

O contactame aquí para sistemas a medida


Nota del autor: Busco programadores y diseñadores freelance para colaborarme con proyectos. Mostrame tus trabajos desarrollados, escribime!


Te agradaría derivar tu proyecto a un programador con años de experiencia?

Ing. Diego Angelini.
Autor de BlogdePHP.com
Programador Web Freelance






Porfolio de proyectos
  • http://twitter.com/vlycser Cristhian Valencia

    Esta buena la funcion, en mis proyectos lo que hago es esto:

    //Definir español
    setlocale(LC_ALL,”es_ES@euro”,”es_ES.UTF8″,”esp”);

    y de esta manera tengo todo en español :)

  • http://www.blogdephp.com/ BlogdePhp.com

    Gracias por participar Cristhian :)

    Intenté poner la sentencia “setlocales…” y luego una sentencia convencional para mostrar la fecha y hora actual y me sigue mostrando en inglés:

    date(‘F j, Y, g:i a’,time());

    es la sentencia que muestra año, mes, día, etc.

    Con tu metología, existe alguna sentencia directa para mostrar la fecha en español sin utilizar alguna función “artesanal”?

  • asd

    Al copiarlo sin revisar no has visto que te faltan un par de meses. Aún así gracias