При написании скриптов 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?
Где "легко" охватывает как "легко записываемые", так и "легко запоминаемые".