Hora local Cómo saber la hora actual en Perl

Perl tiene una práctica función incorporada para encontrar la fecha y hora actuales en sus scripts. Sin embargo, cuando hablamos de encontrar el tiempo, estamos hablando del tiempo que está configurado actualmente en la máquina que ejecuta el script. Por ejemplo, si está ejecutando su script Perl en su máquina local, localtime le devolverá la hora actual que configuró, y probablemente se establezca en su zona horaria actual.

Cuando ejecuta la misma secuencia de comandos en un servidor web, puede encontrar que la hora local está apagada de la hora local en su sistema de escritorio. El servidor podría estar en una zona horaria diferente o estar configurado incorrectamente. Cada máquina puede tener una idea totalmente diferente de lo que es el tiempo local y puede tomar algún ajuste, ya sea dentro del script o en el servidor, para que coincida con lo que espera.

La función localtime devuelve una lista llena de datos sobre la hora actual, algunos de los cuales deberán ajustarse. Ejecute el programa a continuación y verá cada elemento en la lista impresa en la línea y separada por espacios.

#! / usr / local / bin / perl
@timeData = localtime (hora);
print join (", @timeData);

Deberías ver algo similar a esto, aunque el número podría ser muy diferente.

20 36 8 27 11 105 2 360 0

Estos elementos de la hora actual son, en orden:

  • Segundos pasado el minuto
  • Minutos después de la hora
  • Horas pasadas la medianoche
  • Día del mes
  • Meses después del inicio del año.
  • Número de años desde 1900
  • Número de días desde el inicio de la semana (domingo)
  • Número de días desde el inicio del año.
  • Si el horario de verano está activo o no

Entonces, si volvemos al ejemplo e intentamos leerlo, verá que son las 8:36:20 AM del 27 de diciembre de 2005, son 2 días después del domingo (martes), y son 360 días desde el comienzo del año. El horario de verano no está activo.

Hacer que Perl Localtime sea legible

Algunos de los elementos en la matriz que regresa localtime son un poco difíciles de leer. ¿Quién pensaría en el año actual en términos del número de años pasados ​​1900? Echemos un vistazo a un ejemplo que aclara nuestra fecha y hora.

 #! / usr / local / bin / perl

 @months = qw (ene feb mar abr may jun jul ago sep oct nov dic);

 @weekDays = qw (dom lun mar mié jue vie sáb dom);

 ($ segundo, $ minuto, $ hora, $ dayOfMonth, $ mes, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();

 $ año = 1900 + $ añoOffset;

 $ theTime = "$ hora: $ minuto: $ segundo, $ weekDays [$ dayOfWeek] $ meses [$ mes] $ dayOfMonth, $ año";

 print $ theTime; 

Cuando ejecuta el programa, debería ver una fecha y hora mucho más legibles como esta:

 9:14:42, miércoles 28 de diciembre de 2005 

Entonces, ¿qué hicimos para crear esta versión más legible? Primero, preparamos dos matrices con los nombres de los meses y días de la semana..

 @months = qw (ene feb mar abr may jun jul ago sep oct nov dic);

 @weekDays = qw (dom lun mar mié jue vie sáb dom); 

Dado que la función localtime devuelve estos elementos en valores que van desde 0-11 y 0-6 respectivamente, son candidatos perfectos para una matriz. El valor devuelto por localtime se puede usar como una dirección numérica para acceder al elemento correcto en la matriz.