my $parm = "131130381022593331"; my $parm2 = "131121778351196949"; my @parm = ($parm, $parm2); foreach my $wintime (@parm) { my $unix_epoch = win_to_unix_epoch($wintime); my ($year, $month, $day, $hour, $minute, $second) = (localtime $unix_epoch)[5,4,3,2,1,0]; $year += 1900; $month += 1; ($month, $day, $hour, $minute, $second) = map { sprintf '%02d', $_ } $month, $day, $hour, $minute, $second; my $LL= join('-', $day, $month, $year) . ' ' . join(':', $hour, $minute, $second); print $LL."\n"; } sub win_to_unix_epoch { # Actually hundreths of nanoseconds at this point... my $nanoseconds = shift; # Get seconds my $seconds = $nanoseconds / 10_000_000; # This magic number is the difference between Unix and Windows epoch. my $unix_epoch = $seconds - 11644473600; # Return the Unix epoch for use with localtime(). return $unix_epoch; }