Date-Ethiopic

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN


This is the first release of `Date::Ethiopic` submitted to CPAN.
The package was originally intended to be a part of `Convert::Ethiopic::Lite`.
but has inflated to the point where maintenance will be easier
in its own package.  The package will be a work in progress for
quite a while.  It is fully functional for basic date conversions
and should work with any version of Perl.

## About This Package

`Date::Ethiopic` offers services for the Ethiopic calendar system that
are language and culturally neutral.  In addition to `Date::ICal` the
class adds methods for obtaining fasting (Tsome), astrological, and
other info unique to the Ethiopic reckoning of time.

The Ethiopic context is always assumed, a Gregorian context can be
specified when an object is instantiated by adding the "calscale"
argument.  See examples/dates.pl for a demonstration.

The package contains additional classes under the `Date::Ethiopic`
name space that are named under locale conventions.  For example,

TODO  view on Meta::CPAN

* Add Hadiyya, Gedeo, Oromo data after reviewing ethiopic calendar usage.

* Add getTsome method which checks if the object day, or args, is a tsome.

* Eventually implement Gurage, Oromo and Sidama calendar systems.

* Add ጾመ ገሀድ detection based on ትንሣኤ.

* Add methods for holidays.  Consider islamic holidays (complicated by
  lunar calendar).

* Complete formatting methods.  Don't forget ethiopic hour difference.

* Fill out documentation.

doc/EritreanHolidays.html  view on Meta::CPAN

</tr>
<tr>
  <th>26/12</th>
  <th>ም. ብረታዊ ቃልሲ</th>
</tr>
</table>


<h3>Legally Recognized Islamic Holidays</h3>

<p align="justify">Holiday dates depend on the Islamic calendar.</p>

<table border="1">
<tr>
  <th>ልደተ ነቢዩ መሓመድ (መውሊድ)</th>
  <th>Birthday of Prophet Mohammed (Maulid)</th>
</tr>
<tr>
  <th>ዒድ ኣል ፈጥር (ረመዳን)</th>
  <th>Id Al Fetir (Remedan)</th>
</tr>

doc/EthiopianHolidays.html  view on Meta::CPAN

  <th>የኢትዮጵያ አርበኞች ቀን</th>
</tr>
<tr>
  <th>20/9</th>
  <th>ደርግ የወደቀበት</th>
</tr>
</table>

<h3>Legally Recognized Islamic Holidays</h3>

<p align="justify">Holiday dates depend on the Islamic calendar.</p>

<table border="1">
<tr>
  <th>የነቢዩ መሐመድ ልደት (መውሊድ)</th>
  <th>Birthday of Prophet Mohammed (Maulid)</th>
</tr>
<tr>
  <th>ኢድ አል ፈጥር (ረመዳን)</th>
  <th>Id Al Fater (Remedan)</th>
</tr>

lib/Date/Ethiopic.pm  view on Meta::CPAN


sub mod 
{
	( $_[0] - $_[1] * quotient ( $_[0], $_[1] ) );
}


#
# calscale and toGregorian and are methods I recommend every non-Gregorian
# based ICal package provide to identify itself and to convert the
# calendar system it handles into a normalized form.
#
sub calscale
{
	"ethiopic";
}


sub toGregorian
{
my $self = shift;

lib/Date/Ethiopic.pm  view on Meta::CPAN

 #
 $ethio = new Date::Ethiopic ( ical => '20030308', calscale => 'gregorian' );

 #
 #  instantiate with a Date::ICal object, assumed to be in Gregorian
 #
 my $grego = new Date::ICal ( ical => '20030308' );
 $ethio = new Date::Ethiopic ( $grego );

 #
 #  get a Date::ICal object in the Gregorian calendar system
 #
 $grego = $ethio->toGregorian;  


=head1 DESCRIPTION

The Date::Ethiopic module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.

=head2 Limitations

In the Gregorian system the rule for adding a 29th day to February during
leap year follows as per;  February will have a 29th day:

(((((every 4 years) except every 100 years) except every 400 years) except every 2,000) except (maybe every 16,000 years))

The Ethiopic calendar gets an extra day at the end of the 13th month on leap
year (which occurs the year before Gregorian leap year).
It is not known however if the Ethiopic calendar follows the 2,000 year rule.
If it does NOT follow the 2,000 year rule the consequence would be that the
difference between the two calendar systems will increase by a single day.
Hence if you reckon your birthday in the Ethiopic system, that date in
Gregorian may change in five years.  The algorithm here here assumes that
the Ethiopic system will follow the 2,000 year rule.

This may however become a moot point when we consider:


=head2 The Impending Calamity at the End of Time

Well, it is more of a major reset.  Recent reports from reliable sources
indicate that every
1,000 years the Ethiopic calendar goes thru a major upheaval whereby
the calendar gets resyncronized with either September 1st or possibly
even October 1st.  Accordingly Nehasse would then either end on the 25th
day or Pagumen would be extend to 25 days.  Noone will know their birthday
any more, Christmas or any other date that ever once had meaning.  Chaos
will indeed rule the world.

Unless everyone gets little calendar converting applets running on their wrist
watches, that would rule.  But before you start coding applets for future
embeded systems, lets get this clarified.  Consider that the Gregorian
calendar system is less than 500 years old, so this couldn't have happend
a 1,000 years ago, perhaps with the Julian calendar.  Since the Ethiopic
calendar is still in sync with the Coptic, the Copts must have gone thru
the same upheaval.

We are following this story closely, stay tuned to these man pages
for updates as they come in.


=head1 CREDITS

=over 4

=item * Calendrical Calculations: L<http://www.calendarists.com/>

=item * Bahra Hasab: L<http://www.hmml.org/events/>

=item * LibEth: L<http://libeth.sourceforge.net/>

=item * Ethiopica: L<http://ethiopica.sourceforge.net/>

=item * Saint Gebriel Ethiopian Orthodox Church of Seattle: L<http://www.st-gebriel.org/>

=item * Aklile Birhan Wold Kirkos, Metsaheit Tibeb, Neged Publishers, Addis Ababa, 1955 (1948 EC).

lib/Date/Ethiopic/ER/byn.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $byn->useTranscription ( 0 );
 print "  Full  Date: ", $byn->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ER::byn module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ER/gez.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $gez->useTranscription ( 0 );
 print "  Full  Date: ", $gez->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ER::gez module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ER/ti.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $ti->useTranscription ( 0 );
 print "  Full  Date: ", $ti->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ER::ti module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ER/tig.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $tig->useTranscription ( 0 );
 print "  Full  Date: ", $tig->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ER::tig module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ET/am.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $amh->useTranscription ( 0 );
 print "  Full  Date: ", $amh->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ET::am module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ET/gez.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $gez->useTranscription ( 0 );
 print "  Full  Date: ", $gez->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ET::gez module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ET/gru.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $gru->useTranscription ( 0 );
 print "  Full  Date: ", $gru->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ET::gru module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ET/guy.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $guy->useTranscription ( 0 );
 print "  Full  Date: ", $guy->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ET::guy module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ET/har.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $har->useTranscription ( 0 );
 print "  Full  Date: ", $har->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ET::har module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ET/qim.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $qim->useTranscription ( 0 );
 print "  Full  Date: ", $qim->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ET::qim module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ET/ti.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $ti->useTranscription ( 0 );
 print "  Full  Date: ", $ti->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ET::ti module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with

lib/Date/Ethiopic/ET/zgu.pm  view on Meta::CPAN


 #
 # Turn transcription off:
 #
 $zgu->useTranscription ( 0 );
 print "  Full  Date: ", $zgu->full_date, "\n";

=head1 DESCRIPTION

The Date::Ethiopic::ET::zgu module provides methods for accessing date information
in the Ethiopic calendar system.  The module will also convert dates to
and from the Gregorian system.


=head1 CREDITS

Yeha: L<http://yeha.sourceforge.net>

=head1 REQUIRES

Date::Ethiopic, which is distributed in the same package with



( run in 0.963 second using v1.01-cache-2.11-cpan-5dc5da66d9d )