#!perl use v5.16; use strict; use warnings; use DateTime::Format::Epoch; # For parser use DateTime::Format::CLDR; # For formatter 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, unit => 1e7, # Hundreds of nanonseconds ); 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) ->format_cldr('yyyy-MM-ddTHH:mm:ss.SSS'); # This prints 2013-01-18T18:27:22.000, not 2013-01-18T18:27:22.850 say $dt; exit 0;