#! /usr/bin/perl use warnings; use strict; use 5.010; use DateTime; use DateTime::TimeZone; my $begin = 2457205.09272861; my $middle = 2457205.09613609; my $end = 2457205.09954643; my $dt1 = jd2dt($begin); say "date1 is $dt1"; my $dt2 = jd2dt($middle); say "date2 is $dt2"; my $dt3 = jd2dt($end); say "date3 is $dt3"; my $dur = $dt3-$dt1; say "dur is $dur"; sub jd2dt { # convert JD to DateTime my $jd_to_convert = shift; my $days = int $jd_to_convert; # that odd date is "julian day zero", converted to "proleptic" gregorian calendar my $dt = DateTime->new(year => -4713, month => 11, day =>24, hour => 12, time_zone => DateTime::TimeZone->new( name => 'UTC' ))->add(days => $days); $dt->add(hours => 24 * ($jd_to_convert - $days)); say "date is $dt"; }