Calendar-Julian
view release on metacpan or search on metacpan
lib/Calendar/Julian.pm view on Meta::CPAN
package Calendar::Julian;
$Calendar::Julian::VERSION = '0.17';
$Calendar::Julian::AUTHORITY = 'cpan:MANWAR';
=head1 NAME
Calendar::Julian - Interface to Julian Calendar.
=head1 VERSION
Version 0.17
=cut
use 5.006;
use Data::Dumper;
use Date::Julian::Simple;
use Moo;
use namespace::autoclean;
use overload q{""} => 'as_string', fallback => 1;
has year => (is => 'rw', predicate => 1);
has month => (is => 'rw', predicate => 1);
has date => (is => 'ro', default => sub { Date::Julian::Simple->new });
with 'Calendar::Plugin::Renderer';
sub BUILD {
my ($self) = @_;
$self->date->validate_year($self->year) if $self->has_year;
$self->date->validate_month($self->month) if $self->has_month;
unless ($self->has_year && $self->has_month) {
$self->year($self->date->year);
$self->month($self->date->month);
}
}
=head1 DESCRIPTION
The Julian calendar was proclaimed by Julius Cesar in 46 B.C. and underwent
several modifications before reaching its final form in 8 C.E.The Julian calendar
differs from the Gregorian only in the determination of leap years, lacking the
correction for years divisible by 100 and 400 in the Gregorian calendar. In the
Julian calendar, any positive year is a leap year if divisible by 4. (Negative
years are leap years if the absolute value divided by 4 yields a remainder of 1.)
Days are considered to begin at midnight.
In the Julian calendar the average year has a length of 365.25 days. compared to
the actual solar tropical year of 365.24219878 days.The calendar thus accumulates
one day of error with respect to the solar year every 128 years. Being a purely
solar calendar, no attempt is made to synchronise the start of months to the
phases of the Moon.
+-----------------------------------------------------------------------------------+
| July [2017 BE] |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| | 1 | 2 |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| 31 | |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
The package L<App::calendr> provides command line tool C<calendr> to display the
supported calendars on the terminal. Support for C<Julian Calendar> is provided
by L<App::calendr> v0.17 or above.
=head1 SYNOPSIS
use strict; use warnings;
( run in 1.347 second using v1.01-cache-2.11-cpan-b16cb0d3907 )