Al escribir scripts de Perl con frecuencia encuentro la necesidad de obtener la hora actual representado como una cadena con formato de YYYY-mm-dd HH:MM:SS
(digamos 2009-11-29 14:28:29
).llegar rápidamente a AAAA-MM-DD HH: MM: SS en Perl
Al hacer esto, me encuentro tomando este camino bastante engorroso:
man perlfunc
/localtime
para buscar localtime - Repetir cinco veces (/
+\n
) para llegar a la sección correspondiente de la página de manual- Copie la cadena
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
de la página de manual a mi script. - Probar con
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec);
- Recuerde gotcha # 1: Debe agregar 1900 a $ year para obtener el año actual.
- Probar con
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon, $mday, $hour, $min, $sec);
- Recuerde gotcha # 2: Debe agregar 1 a $ mon para obtener el mes actual.
- Probar con
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec);
- Parece correcto. ¡Hecho!
Mientras que el proceso descrito anteriormente funciona está lejos de ser óptima. Estoy seguro de que hay una manera más inteligente, así que mi pregunta es simple:
¿Cuál es la forma más fácil de obtener un YYYY-mm-dd HH:MM:SS
de la fecha/hora actual en Perl?
Donde "fácil" abarca tanto "fácil de escribir" como "fácil de recordar".
Usted ¡debería haber escrito una subrutina para buscar el perlfunc y recordar los errores para usted, por supuesto! – AmbroseChapel