next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Directorios Sup: Filehandles Ant: La función stat Err: Si hallas una errata ...

La función localtime

Cuando localtime es llamada en un contexto de lista devuelve una lista como sigue:
 #  0    1    2     3     4    5     6     7     8
 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

Vea el siguiente ejemplo de uso:

  DB<1> @f = `ls`
  DB<2> chomp(@f) # eliminamos retornos de carro finales
  DB<3> x @f[0..5] # veamos los nombres de los 6 primeros ficheros
0  'a2pdf'
1  'Abstract.pm'
2  'adressbook.pl'
3  'advanced_perl_programming'
4  'amatch.pl'
5  'A.pl'
  DB<4> @s = stat $f[0]
  DB<5> x @s
0  2051 
1  2171079
2  33261
3  1
4  1007
5  1007
6  0
7  339
8  1111133369
9  1092043518
10  1096562651
11  4096
12  8
  DB<6> use constant mtime => 9 # definimos la constante mtime como 9
  DB<7> p $s[mtime] # formato Midnight Universal Time
1092043518
  DB<8> @t = localtime $s[mtime] # contexto de lista
  DB<9> x @t
0  18  # segundos
1  25  # minutos
2  10  # horas
3  9   # día del mes
4  7   # mes: Agosto. Enero es el 0.
5  104 # año desde 1900: 1900+104 = 2004
6  1   # dia de la semana: Lunes. Domingo es el 0.
7  221 # dia del año
8  1   # daylight savings time (cambio de horario) es cierto
  DB<10> $t = localtime $s[mtime] # contexto escalar
  DB<11> x $t 
0  'Mon Aug  9 10:25:18 2004'

Cuando no se le da argumento a localtime devuelve el correspondiente al MUT devuelto por la función time:

  DB<1> $d = localtime
  DB<2> p $d
Thu Mar 31 18:46:47 2005
La función gmtime es similar a localtime sólo que devuelve el tiempo Greenwich:
  DB<3> $g = gmtime
  DB<4> p $g
Thu Mar 31 17:47:13 2005
  DB<5> $c = time
  DB<6> p $c
1112291278
  DB<7> p localtime $c
5847183121054891
  DB<8> p "".localtime $c
Thu Mar 31 18:47:58 2005
  DB<9> p scalar(localtime $c)
Thu Mar 31 18:47:58 2005
  DB<10> p scalar localtime(time-(24*60*60)), "\n";
Wed Mar 30 19:14:33 2005

Ejercicio 2.2.1   Explique los resultados en los pasos 7, 8,9 y 10 del ejemplo anterior.

Ejercicio 2.2.2   Usando el depurador de Perl calcule que día del calendario fué hace 500 días.

Si se quiere tener mayor precisión en la medida del tiempo, use el módulo Time::HiRes. Sigue un ejemplo de uso:

  DB<1> use Time::HiRes
  DB<2> p time
1112339548
  DB<3> p Time::HiRes::time
1112339556.72756
Puede verse como se usa un número flotante incluyendo no sólo los segundos sino los microsegundos MUT. Si queremos sustituir la función time por la que provee Time::HiRes deberemos importarla nombrándola explícitamente en el pragma use:

  DB<4> use Time::HiRes "time"
  DB<5> p time
1112339573.30229


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Directorios Sup: Filehandles Ant: La función stat Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21