#zon <datum>
# Original by PtPazuzu
use utf8;
use DateTime::Astro::Sunrise;
use Date::Calc qw(Mktime Localtime Timezone);
use POSIX qw(strftime);

sub zon
{
    my ($msg) = @_, my ($lat, $lon, $sunrise, $sunset);
    my ($sec,$min,$hour, $day,$month,$year, $dow,$doy,$dst, $timezone);

    # Rotterdam
    $lat = 51.9242;
    $lon = 4.4818;

    if ($msg =~ m/^(\d{4})-(\d{2})-(\d{2})$/)
    {
        # Noon. Change to/from DST is before sunrise/sunset.
        my $time = Mktime($1, $2, $3, 12, 0, 0);
        ($year,$month,$day, $hour,$min,$sec, $doy,$dow,$dst) = Localtime($time);
        $timezone = (Timezone($time))[3];
    }
    else
    {
        ($sec,$min,$hour, $day,$month,$year, $dow,$doy,$dst) = localtime(time);
        $year += 1900;
        $month++;
        $timezone = strftime("%z", localtime(time));
        $timezone =~ s{^\+0*|00$}{}g;
    }

    ($sunrise, $sunset) = sunrise($year, $month, $day, $lon, $lat, $timezone, 0);

    return sprintf("Datum: %04d-%02d-%02d. Zonsopgang in Rotterdam: %s. Zonsondergang in Rotterdam: %s.\n"
                  ,$year,$month,$day
                  ,$sunrise,$sunset
                  );
}

sub zon_help
{
    my $return;
    $return  = "Toon zonsop- en -ondergang voor een bepaalde dag in Rotterdam: zon <datum>\n";
    $return .= "Bv.: zon 2007-04-23 -> toon zonsop- en -ondergang voor 23 april 2007\n";
    $return .= "Bv.: zon -> toon zonsop- en -ondergang voor vandaag\n";
    return $return;
}

1;
