При написании скриптов Perl я часто нахожу необходимость получить текущее время, представленное в виде строки, отформатированной как YYYY-mm-dd HH:MM:SS
(скажем 2009-11-29 14:28:29
).
При этом я нахожу себя в этом довольно громоздком пути:
-
man perlfunc
-
/localtime
для поиска по местному времени - повторите пять раз (/
+\n
), чтобы перейти к соответствующему разделу manpage - Скопируйте строку
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
с man-страницы на мой script. - Попробуйте
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec);
- Помните, что gotcha # 1: нужно добавить от 1900 до $года, чтобы получить текущий год.
- Попробуйте
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon, $mday, $hour, $min, $sec);
- Помните, что gotcha # 2: нужно добавить от 1 до $mon, чтобы получить текущий месяц.
- Попробуйте
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec);
- Кажется, все в порядке. Готово!
В то время как описанный выше процесс работает, он далеко не оптимален. Я уверен, что есть более умный способ, поэтому мой вопрос просто:
Каков самый простой способ получить YYYY-mm-dd HH:MM:SS
текущей даты/времени в Perl?
Где "легко" охватывает как "легко записываемые", так и "легко запоминаемые".