2010-11-23 2 views
0

Im ищет модуль perl, который берет строку с датой как это «23 ноября 10: 42: 31.808381» и ее формат что-то вроде «% b% d ....» это и получить мне объект dateTime/или распечатать его в другом формате, указанном таким же образом. Time :: Piece не имеет разрешения до nano секунд. Есть ли какой-нибудь модуль, который мне поможет? Im Использование Perl 5.8 (это оленья кожа назвали обратные_связи)Синхронизация dateTime в perl, правильная для микро/nano секунд

ответ

2

DateTime::Format::Strptime имеет поддержку микросекунд и наносекунды.

Ваш формат немного странный, так как он не включает год. Я добавил, что вы делаете этот демо-код.

#!/usr/bin/perl 

use strict; 
use warnings; 

use DateTime::Format::Strptime; 

my $strp = DateTime::Format::Strptime->new(
    pattern => '%b %d %Y %H:%M:%S.%6N', 
    on_error => 'croak', 
); 

my $string = 'Nov 23 2010 10:42:31.808381'; 

my $dt = $strp->parse_datetime($string); 

print $dt->microsecond; 
0

"23 ноября 10: 42: 31,808381" - это микросекунды, а не наносекунд

Если вам нужно микросекунд, необходимо использовать Time :: HiRes; модуль и метод gettimeofday.

+0

В настоящее время это микросекунды, но я тоже понадоблюсь для nano секунд. – balki

+1

perl не слишком быстрый даже для разрешения микросекунд. и я не понимаю, почему вам нужны наносекунды. – CyberDem0n

+0

Пример: perl -e 'время использования :: HiRes qw/nanosleep gettimeofday /; $ А = gettimeofday(); nanosleep (1); $ Ь = gettimeofday(); print $ b- $ a; ' 6.19888305664062e-05 – CyberDem0n

Смежные вопросы