¡Ya estamos en Twitter!

Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad

Despliegue de Fecha I

por Uriel Lizama

En este tutorial vamos a aprender como desplegar la fecha con Perl de manera sencilla y rápida.


time() y localtime()

En Perl podemos saber la hora del día usando la función time(), esta función regresa un número que si lo vemos es similar al siguiente:

1192320763

Este número representa la cantidad de segundos que han transcurrido desde una fecha en específico, en la mayoría de los sistemas esta fecha es el 1º de Enero de 1970 a las 0 horas GMT, una excepción de estos sistemas es la Mac, que cuenta los segundos desde el 1º de Enero de 1904 en la zona horaria del sistema.

A menos que tengamos la habilidad para hacer las fórmulas matemáticas en nuestro cerebro para convertir esos segundos en días, meses y años, realmente no nos ayuda de mucho, y para ello debemos de usar otra función de Perl que es localtime().

La función localtime recibe un número de tiempo similar al regresado por la función time() de Perl y convierte el número en una lista de 9 elementos.

#   0,    1,   2,   3,    4,    5,   6,    7,     8
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

$sec(segundos), $min(minutos), y $hour(horas), representan la hora de la fecha especificada por time.

$mday es el día del mes y $mon es un número del 0 al 11 que representa el mes, donde 0 es Enero y 11 es Diciembre.

$year es la cantidad de años desde 1900 a la fecha. Así que para 2007 este elemento tendrá un valor de 107.

$wday es el día de la semana, representado con un número del 0 al 6, donde 0 es Domingo y 6 es Sábado.

$yday es el número del día del año, este número está en el rango del 0 al 364 y hasta 365 en años bisiestos.

Finalmente $isdst es verdadero en el caso de que la fecha esté dentro del horario de verano, también conocido como Daylight Saving Time, será falso de lo contrario.

Ya teniendo nuestros elementos entonces es simplemente cuestión de imprimirlos como nosotros querramos para sacar la fecha y hora actual:

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

$year += 1900;
$mon++;

print "$mday/$mon/$year $hour:$min:$sec\n";

Primer recibimos nuestros 9 elementos de la fecha usando localtime().

Después sumamos 1900 al número que tenemos en $year, debido a que localtime() nos regresa la cantidad de años desde 1900.

En la cuarta línea sumamos uno al mes, pues recuerda que los meses los empieza a contar desde 0 y no de 1 como nosotros queremos.

Finalmente en la última línea imprimos la fecha y hora para que se vea de la siguiente manera:

13/10/2007 18:33:11


POSIX

Ya sabemos como imprimir la fecha, pero como todo en Perl, hay más de una manera de hacer las cosas, y de hecho hay una manera que es mucho más sencilla.

Todas las distribuciones de Perl vienen con módulos base, entre ellos POSIX. Este módulo contiene una función llamada strftime que nos permite darle formato a alguna fecha de manera sencilla.

Por ejemplo, para imprimir la fecha en el formato anterior, haríamos lo siguiente:

use POSIX qw/ strftime /;

print strftime( "%d/%m/%Y %H:%M:%S", localtime(time) );

En la primera línea cargamos el módulo POSIX con la función strftime para poder usarla en nuestro código.

Después, en la siguiente línea hacemos la llamada a la función e imprimimos el resultado.

Debemos enviar 10 argumento en total a strftime(), el primero es el formato en que queremos imprimir la fecha, y los otros nueve son todos aquellos elementos que nos regresa la función localtime. En este caso, simplemente hacemos una llamada a localtime que envía la lista a la función strftime.

Como ves es cuestión de un par de líneas desplegar la fecha como nosotros queremos, pero incluso podemos formatear la fecha de diversas maneras. Si ves, la cadena de formato está compuesta de varios símbolos de porcentaje seguidos de letras, estas expresiones serán sustiuidas por valores específicos por medio del POSIX, las posibles expresiones que podemos usar son:

%aabreviación del día de la semana en inglésSun a Sat
%Adía de la semana en inglésMonday
%bmes abreviado en inglésJan a Dec
%Bmes en inglésJanuary
%cfecha pre-formateadaej. Fri Apr 28 17:23:15 1995
%ddía del mesej. 01-31
%Hhora del día00-23
%Ihora del día01-12
%jdía del año0-365
%mmes del año01-12
%Mminuto00-59
%pAM o PMAM-PM
%ssegundos00-59
%usemana del año (Domingo como primer día)01-53
%wdía de la semana1 (Lunes) a 7 (Domingo)
%Wsemana del año (Lunes como primer día)01-53
%xfecha formateadaej. 04/28/95
%Xhora del díaej. 03:30:01 AM
%Yaño en 4 dígitosej. 2007
%Zzona horariaej. Center Daylight Time

El camino que tomes para desplegar la fecha en tu código depende de ti, pero mi recomendación es que uses POSIX pues te simplificará la vida.

En el siguiente tutorial veremos maneras más completas de desplegar la fecha en otros idiomas como el Español, usando unos módulos bastante sencillos.

¿Quiéres más tutoriales como este? Escribir tutoriales toma una gran cantidad de tiempo y esfuerzo. Si este tutorial te ayudó a aprender o a solucionar algo, por favor considera dejar alguna donación en apoyo a Perl en Español.

Cliquea en el botón de abajo para dejar tu donación por medio de PayPal.

Comparte:
Categorías de Tutoriales:
En Nuestros Foros:

    Software error:

    junk after document element at line 1, column 32, byte 32 at /usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.
    

    For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

  • Entra a los foros »
Socializa:
Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Perl en Español es mantenido con Movable Type
Todo el contenido de Perl en Español está bajo una licencia CC:
Creative Commons License