разметка времени с миллисекундами в Perl - PullRequest
4 голосов
/ 08 ноября 2010

Предполагая, что у меня есть куча временных меток, таких как «11/05/2010 16: 27: 26.003», как их анализировать с миллисекундами в Perl.если они до или после определенного времени.

Я пытался использовать Time :: Local, но кажется, что Time :: Local способен анализировать только секунду.А Time :: HiRes, с другой стороны, на самом деле не предназначен для разбора текста.

Спасибо, Дерек

Ответы [ 2 ]

15 голосов
/ 08 ноября 2010
use DateTime::Format::Strptime;

my $Strp = new DateTime::Format::Strptime(
    pattern => '%m/%d/%Y %H:%M:%S.%3N',
    time_zone   => '-0800',
);

my $now = DateTime->now;
my $dt  = $Strp->parse_datetime('11/05/2010 23:16:42.003');
my $delta = $now - $dt;

print DateTime->compare( $now, $dt );
print $delta->millisecond;
9 голосов
/ 08 ноября 2010

Вы можете использовать Time::Local и просто добавить .003 к нему:

#!/usr/bin/perl

use strict;
use warnings;

use Time::Local;

my $timestring = "11/05/2010 16:27:26.003";
my ($mon, $d, $y, $h, $min, $s, $fraction) =
    $timestring =~ m{(..)/(..)/(....) (..):(..):(..)([.]...)};
$y -= 1900;
$mon--;

my $seconds = timelocal($s, $min, $h, $d, $mon, $y) + $fraction;

print "seconds: $seconds\n";
print "milliseconds: ", $seconds * 1_000, "\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...