¡Ya estamos en Twitter!

Perl en Español

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

Despliegue de Fecha II

por Uriel Lizama

Introducción

Si viste el tutorial de Despliegue de Fecha I ya sabes la manera en que se puede desplegar la hora, esta vez, vamos a agregar un poco más de código para desplegar la fecha de una manera más amigable:

Viernes Enero 24 del 2002 a las 11:27:33

Aumentando

Antes habíamos visto la siguiente linea:

my ($minuto, $hora, $mday, $mes, $año) = (localtime(time))[1,2,3,4,5];

En este caso para lo que necesitamos vamos a agregar unos elementos más:

my ($segundo,$minuto,$hora,$dia,$mes,$anio,$diaSemana) = (localtime(time))[0,1,2,3,4,5,6];

Como podrás ver agregamos, "$segundo" y "$diaSemama". "$diaSemana" nos indica en que día estamos, es decir en la semana hay 7 días por lo que si es Lunes estaremos en el día "2".

Muy bien, ahora tenemos todos los elementos necesarios, vayamos con la siguiente parte.

Arrays

Lo tenemos todo en números, pero ¿cómo hacemos que eso se convierta en palabras?. Eso es sumamente sencillo, primero crearemos dos arrays con los nombres de los días y el de los meses:

my @dias = ('Domingo','Lunes','Martes','Miércoles', 'Jueves','Viernes','Sábado');
my @meses = ('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio', 'Agosto','Septiembre','Octubre','Noviembre','Diciembre');

Nota: Recuerda que la semana empieza con Domingo, no con el Lunes.

Muy bien, ya tenemos nuestros arrays, esos los vamos a dejar para más adelante, ahora veamos como vamos a desplegar la hora.

Comunmente los relojes despliegan la hora en el modo HH:MM:SS, así que nosotros también lo vamos a hacer de esa manera.

my $tiempo = sprintf("%02d:%02d:%02d",$hora,$minuto,$segundo);

No te vayas a frustrar, vamos a explicar esa linea con detenimiento.

El primer elemento es la variable a la que le asignamos todo "$tiempo", ahora el comando que vemos de "sprintf" es un comando especial de perl creada realmente para poder desplegar elementos de reportes de una manera ordenada, esta vez lo estamos utilizando para la hora.

La linea entre comillas dentro del comando, indican los espacios "%02d" esta indica que vamos a
desplegar dos números y en caso de faltar uno, sustituimos con un 0.

La siguiente parte después de la coma, son las variables que asignamos a cada espacio que deseas.
Muy bien ya tenemos todo ahora vamos a la linea más importante:

my $fecha = "$dias[$diaSemana] $meses[$mes] $dia del $anio a las $tiempo";

En esta parte es donde ya usamos los arrays que hicimos "@meses", "@dias" entonces debido a que "$diaSemana" y "$mes" son números los podemos facilmente asignar como espacios en el array para asi conseguir el día y el mes que deseamos.

La sintáxis de la linea "$fecha" se puede cambiar. Para que tenga los elementos que tu deseas y como los deseas.

Código Final

#!/usr/bin/perl -w

use strict;

my ($segundo,$minuto,$hora,$dia,$mes,$anio,$diaSemana) = (localtime(time))[0,1,2,3,4,5,6];

my @dias = ('Domingo','Lunes','Martes','Miércoles',
'Jueves','Viernes','Sábado');

my @meses = ('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio',
'Agosto','Septiembre','Octubre','Noviembre','Diciembre');

my $tiempo = sprintf("%02d:%02d:%02d",$hora,$minuto,$segundo);

my $fecha = "$dias[$diaSemana] $meses[$mes] $dia del $anio a las $tiempo";

print $fecha;

exit(1);


¿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:
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