I expect the following test script to print a timestamp with
millisecond precision, but it doesn't. I'm running DateTime
version 1.03 and DateTime::Format::Epoch version 0.13 on 32-bit
Windows Vista with Strawberry Perl version 5.16.2.
What's wrong?
#!perl
use v5.16;
use strict;
use warnings;
use DateTime;
use DateTime::Format::Epoch;
use Math::BigInt;
my $epoch = DateTime->new(
year => 1601,
month => 1,
day => 1,
hour => 0,
minute => 0,
second => 0,
nanosecond => 0,
);
my $parser = DateTime::Format::Epoch->new(
epoch => $epoch,
type => 'bigint',
unit => 1e7, # Hundreds of nanonseconds, Microsoft FILETIME
);
my $timestamp = Math::BigInt->new('0x01_CD_F5_A9_75_38_2F_DF');
# This prints 130030072428507103, which is correct
say $timestamp;
my $dt = $parser->parse_datetime($timestamp);
# This prints 2013-01-18T18:27:22.000, not 2013-01-18T18:27:22.850
say $dt->format_cldr('yyyy-MM-ddTHH:mm:ss.SSS');
# This prints 130030072420000000, not 130030072428507103
say $parser->format_datetime($dt);
exit 0;
__END__
130030072428507103
2013-01-18T18:27:22.000
130030072420000000
Jim Monty