Каков наиболее эффективный способ добавления миллисекунд к этому коду?

#----------------------------------------------------------------------------- # # Get time string # #----------------------------------------------------------------------------- # sub formatTime { my ( $seconds ) = @_; my( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime( $seconds ); $year += 1900; $mon += 1; return ( sprintf "%02d/%02d/%04d %02d:%02d:%02d", $mday,$mon,$year,$hour,$min,$sec ); } #----------------------------------------------------------------------------- # # Extract time from the string # #----------------------------------------------------------------------------- # sub extractTime { my ( $edate, $time ) = @_; my $date = $1 if ($edate =~ /(\d+\/\d+\/\d+)/); # remove leading '[' etc. my ( $mday, $mon, $year ) = split( /\//, $date ); my ( $hour,$min, $sec ) = split( /:/, $time ); return (timelocal( $sec, $min, $hour, $mday, ($mon - 1), ($year - 1900 ))); } 

One Solution collect form web for “Каков наиболее эффективный способ добавления миллисекунд к этому коду?”

Чтобы получить более высокую точность для функции formatTime , вам нужно взять миллисекунды, а не секунды. Вы не можете делать округленные секунды и уточнять.

Поскольку localtime () принимает только секунды с эпохи, вам нужно будет преобразовать пройденные милисекунды и преобразовать их в секунды. Вот пример:

 use POSIX qw(floor); sub formatTime { my ( $milliseconds ) = @_; my $seconds = floor($milliseconds / 1000); my $msec = $milliseconds % 1000; my( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime( $seconds ); $year += 1900; $mon += 1; return ( sprintf "%02d/%02d/%04d %02d:%02d:%02d:%04d", $mday,$mon,$year,$hour,$min,$sec,$msec ); } 

Другой вариант – использовать DateTime . Если вы за считанные секунды считаете десятичным, он может создать объект DateTime с большей точностью:

 use DateTime; sub formatTime { my ( $seconds ) = @_; my $dt = DateTime->from_epoch( epoch => $seconds ); # .... } 
  • Временная метка оборудования с использованием PTP
  • Изменить временную метку файла и время показа вместо года с помощью ls
  • команда / opt / bin / date -date '-15 минут 2016-04-27T14: 14: 47' результат за много часов до указанного времени
  • Почему ls -lrth и ls -ltch дают разные результаты
  • Найти файлы между двумя папками в linux?
  • Удалить файлы старше X дней +
  • Изменение метки времени символической ссылки
  • Объединение файлов журналов с разными форматами временных меток
  • ls показывает временную метку без времени для файла на NFS
  • Можете ли вы прочитать обновленное mtime, но при чтении содержимого они еще не обновлены?
  • вычислять время отклика из записей журнала времени
  • Linux и Unix - лучшая ОС в мире.