- SEE ALSO
- TO DO
- COPYRIGHT AND LICENSE
Date::Baha::i - Convert to and from Baha'i dates
# perl -MDate::Baha::i -le'%d = to_bahai(); print as_string(\%d)' use Date::Baha'i; my($year, $month, $day) = (2018, 10, 2); my $bahai_date = to_bahai(); $bahai_date = to_bahai(epoch => time); $bahai_date = to_bahai( year => $year, month => $month, day => $day, ); my %bahai_date = to_bahai(); %bahai_date = to_bahai(epoch => time); %bahai_date = to_bahai( year => $year, month => $month, day => $day, ); my($bahai_year, $bahai_month, $bahai_day) = (175, 11, 6); my $date = from_bahai( year => $bahai_year, month => $bahai_month, day => $bahai_day, ); ($year, $month, $day) = from_bahai( year => $bahai_year, month => $bahai_month, day => $bahai_day, ); $day = next_holy_day(); $day = next_holy_day($year, $month, $day); my @cycles = cycles(); my @years = years(); my @months = months(); my @days = days(); @days = days_of_the_week(); my %days = holy_days();
This package renders the Baha'i date from two standard date formats - epoch time and a (year, month, day) triple. It also converts a Baha'i date to standard ymd format.
Each cycle of nineteen years is called a Vahid. Nineteen cycles constitute a period called Kull-i-Shay.
The names of the years in each cycle are:
1. Alif - The Letter "A" 2. Ba - The letter "B" 3. Ab - Father 4. Dal - The letter "D" 5. Bab - Gate 6. Vav - The letter "V" 7. Abad - Eternity 8. Jad - Generosity 9. Baha - Splendour 10. Hubb - Love 11. Bahhaj - Delightful 12. Javab - Answer 13. Ahad - Single 14. Vahhab - Bountiful 15. Vidad - Affection 16. Badi - Beginning 17. Bahi - Luminous 18. Abha - Most Luminous 19. Vahid - Unity
The names of the months in the Baha'i (Badi) calendar were given by the Bab, who drew them from the nineteen names of God invoked in a prayer said during the month of fasting in Shi'ih Islam. They are:
1. Baha - Splendour (21 March - 8 April) 2. Jalal - Glory (9 April - 27 April) 3. Jamal - Beauty (28 April - 16 May) 4. 'Azamat - Grandeur (17 May - 4 June) 5. Nur - Light (5 June - 23 June) 6. Rahmat - Mercy (24 June - 12 July) 7. Kalimat - Words (13 July - 31 July) 8. Kamal - Perfection (1 August - 19 August) 9. Asma' - Names (20 August - 7 September) 10. 'Izzat - Might (8 September - 26 September) 11. Mashiyyat - Will (27 September - 15 October) 12. 'Ilm - Knowledge (16 October - 3 November) 13. Qudrat - Power (4 November - 22 November) 14. Qawl - Speech (23 November - 11 December) 15. Masa'il - Questions (12 December - 30 December) 16. Sharaf - Honour (31 December - 18 January) 17. Sultan - Sovereignty (19 January - 6 February) 18. Mulk - Dominion (7 February - 25 February) * Ayyam-i-Ha - Days of Ha (26 February - 1 March)) 19. 'Ala - Loftiness (2 March - 20 March)
Intercalary Days: Four (or five) days in a leap year, before the last month.
The days of the Baha'i week are:
1. Jalal - Glory (Saturday) 2. Jamal - Beauty (Sunday) 3. Kaml - Perfection (Monday) 4. Fidal - Grace (Tuesday) 5. 'Idal - Justice (Wednesday) 6. Istijlal - Majesty (Thursday) 7. Istiqlal - Independence (Friday)
The Baha'i day of rest is Isiqlal (Friday) and the Baha'i day begins and ends at sunset.
There are 11 Holy Days:
* Naw Ruz - The Spring Equinox
Generally March 21.
If the equinox falls after sunset on 21 March, Naw Ruz is observed on 22 March, since the Baha'i day begins at sunset.
* Ridvan - Declaration of Baha'u'llah in 1863
1st day - 21 April 9th day - 29 April 12th day - 2 May
* Declaration of the Bab - 23 May, 1844
* Ascension of Baha'u'llah - 29 May, 1892
* Martyrdom of the Bab - 9 July, 1850
* Birth of the Bab - 20 October, 1819
* Birth of Baha'u'llah - 12 November, 1817
* Ascension of 'Abdu'l-Baha - 28 November, 1921
* Ayyam-i-Ha (the Intercalary Days) 26 February to 1 March
* The Fast - 2-20 March in the month 'Ala - 19 days from sunrise to sunset
# Return a string in scalar context. $bahai_date = to_bahai(); $bahai_date = to_bahai( epoch => time, use_gmtime => $use_gmtime, %args, ); $bahai_date = to_bahai( year => $year, month => $month, day => $day, %args, ); # Return a hash in array context. %bahai_date = to_bahai(); %bahai_date = to_bahai( epoch => time, use_gmtime => $use_gmtime, %args, ); %bahai_date = to_bahai( year => $year, month => $month, day => $day, %args, );
This function returns either a string or a hash of the date names and numbers from either epoch seconds, or a year, month, day named parameter triple.
If using epoch seconds, this function can be forced to use gmtime instead of localtime. If neither a epoch or a ymd triple are given, the system localtime is used as the default.
The extra, optional arguments are used by the as_string function, detailed below.
In a scalar context, this function returns a string sentence with the numeric or named date. In an array context, it returns a hash with the following keys:
kull_i_shay, cycle, cycle_name, cycle_year, year, year_name, month, month_name, day, day_name, dow, dow_name and holy_day (if there is one)
# Return a y/m/d string in scalar context. $date = from_bahai( year => $bahai_year, month => $bahai_month, day => $bahai_day, ); # Return a ymd triple in array context. ($year, $month, $day) = from_bahai( year => $bahai_year, month => $bahai_month, day => $bahai_day, );
This function returns either a string or a list of the given date.
Currently, this supports the Baha'i year, month and day, but not the kull-i-shay, cycle, cycle name or cycle year.
$date = as_string( \%bahai_date, size => $size, alpha => $alpha, numeric => $numeric, );
Return the Baha'i date as a friendly string.
This function takes a Baha'i date hash and Boolean arguments that determine the format of the output.
The "size" argument toggles between short and long representations. As the names imply, the "alpha" and "numeric" flags turn the alphanumeric representations on or off. The defaults are as follows:
alpha => 1 numeric => 0 size => 1
(Which mean that "long non-numeric alpha" is the default representation.)
Here are some handy examples (newlines added for readability):
short numeric: 159/11/6 # year/month/day long numeric: 7th day of the week, 1st day of the 1st month, year 159, 7th year of the 9th vahid of the 1st kull-i-shay, holy day: Naw Ruz short alpha Istiqlal, Baha of Baha, Abad of Baha long alpha: week day Istiqlal, day Baha of month Baha, year one hundred fifty nine of year Abad of the vahid Baha of the 1st kull-i-shay, holy day: Naw Ruz short alpha-numeric: Istiqlal (7), Baha (1) of Baha (1), year 159, Abad (7) of Baha (9) long alpha-numeric: 7th week day Istiqlal, 1st day Baha of the 1st month Baha, year one hundred and fifty nine (159), 7th year Abad of the 9th vahid Baha of the 1st kull-i-shay, holy day: Naw Ruz
$d = next_holy_day(); $d = next_holy_day($year, $month, $day);
Return the name of the first holy day after the provided date.
@c = cycles();
Return the 19 cycle names as an array.
@y = years();
Return the 19 year names as an array.
@m = months();
Return the 19 month names as an array, along with the intercalary days as the last element.
@d = days();
Return the 19 day names as an array.
@d = days_of_the_week();
Return the seven day-of-the-week names as an array.
%d = holy_days();
Return a hash with keys of the Holy Day names and values of the date or range.
These values are array references of either two or three elements: month, day and the (optional) number of days observed.
Dates are given in common, standard (non-Baha'i) format.
Base the date computation on the time of day (Baha'i day begins at sunset).
Make this a DateTime module.
Support cycles and Kull-i-Shay.
Overload localtime and gmtime, just to be cool?
Gene Boggs <email@example.com>
This software is copyright (c) 2015 by Gene Boggs.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.