#!/usr/bin/perl -ws
# Cosmic Calendar Date Calculator

use strict;

use DateTime;
use POSIX qw(floor);

my $hours_in_day = 24;
my $days_in_std_year = 365;
my $days_in_leap_year = 366;
my $age_of_universe = 13700;

my $usage = "Usage: ccdc time-ago [year] [age of universe]\n\ttime-ago: number of years ago in millions of years\n\tyear: four-digit year (defaults to current year)\n\tage of universe: in millions of years (defaults to $age_of_universe)\n";

unless( $#ARGV > -1 && $#ARGV < 3 ) { die $usage; }

###########################################################

my $mya = shift @ARGV;

my $year = DateTime->now->year;
if( $#ARGV > -1 ) { $year = shift @ARGV; }

if( $#ARGV > -1 ) { $age_of_universe = shift @ARGV; }

my $base_date = DateTime->new ( year => $year, time_zone => 'floating' );
my $days_in_year = $base_date->is_leap_year ? $days_in_leap_year : $days_in_std_year;

my $delta = (($age_of_universe - $mya) / $age_of_universe) * $days_in_year;
my $delta_days = floor( $delta );
my $delta_hours = ($delta - $delta_days) * $hours_in_day;

my $delta_datetime = DateTime::Duration->new( 
	days => $delta_days,
	hours => $delta_hours
);

my $date = $base_date->add( $delta_datetime );

print "$date\n";
