bahaicalendar / badical
用于在格里历和巴哈伊历之间转换的库。
This package is not auto-updated.
Last update: 2024-09-24 03:40:27 UTC
README
库,用于在格里历和巴迪 / 巴哈伊历之间转换。
之前位于 BadiCal,但该仓库正在BahaiCalendar 组中拆分为个别语言。
目前有
- PHP (本文件)
- JavaScript
由于巴迪日期从日落开始,每次转换都有两种可能性。从格里历转换为巴迪历时,可以得到该格里历日的日落前或后的巴迪日期;默认为前者。从巴迪历转换为格里历时,可以得到该巴迪日期开始于或结束于午夜前的格里历日期;默认为后者。
例如,2015-03-21 (格里历) 默认转换为巴迪历 172-01-01 (巴迪:巴哈 1, 172 即纳乌鲁兹) 的末尾,并且可选择转换为 172-01-02 (巴迪) 的开始。因此,172-01-01 (巴迪) 默认转换为格里历 2015-03-21 的开始,并可选择性转换为 2015-03-20 的末尾。
默认始终为白天转换。
该库使用来自 http://wilmetteinstitute.org/wp-content/uploads/2014/11/Bahai-Dates-172-to-221-B-E-_UK-December-2014.pdf 的预计算纳乌鲁兹日期。请报告任何错误(参见 BadiCal.NAWRUZ)。
加载
composer require bahaicalendar/badical
如果不使用 Composer,可以通过在此仓库根目录中要求 load.php 文件来自动加载所有类。
用法
当前的用法非常简单。有两个静态转换函数,它们返回 \BahaiCalendar\BadiCal\Date 对象。
格里历到巴迪历
\BahaiCalendar\BadiCal\Convert::GregorianToBadi
- @param year - 格里历年份
- @param month - 格里历月份
- @param date - 格里历日期
- @param startOf - [可选,默认=FALSE] 返回的日期是该格里历日期的巴迪日期结束于(TRUE,晚上)还是开始于(FALSE,白天)。
$badiDate = \BahaiCalendar\BadiCal\Convert::GregorianToBadi( 2015, //Gregorian year 3, //Gregorian month 21, //Gregorian date, true //TRUE = start of, FALSE/Omited = end of ); echo $badiDate->monthName().' '.$badiDate->day().', '.$badiDate->year()."\n"; echo 'Date type: '.$badiDate->type."\n"; $badiDate = \BahaiCalendar\BadiCal\Convert::GregorianToBadi( 2015, //Gregorian year 3, //Gregorian month 21, //Gregorian date, FALSE //Note the difference ); echo $badiDate->year().'-'.$badiDate->month(true /* add zero */).'-'.$badiDate->day(true /* add zero */)."\n";
输出
Baha 2, 172
Date type: BADI
172-01-01
巴迪历到格里历
\BahaiCalendar\BadiCal\Convert::BadiToGregorian
- @param year - 巴迪历年份
- @param month - 巴迪历月份
- @param date - 巴迪历日期
- @param startsOn - [可选,默认=FALSE] 返回的日期是该巴迪日期开始于(TRUE,晚上)还是结束于(FALSE,白天)。
$gregDate = \BahaiCalendar\BadiCal\Convert::BadiToGregorian( 172, //Badi year 1, //Badi month 1, //Badi date, true //TRUE = start of, FALSE/Omited = end of ); echo $gregDate->monthName().' '.$gregDate->day().', '.$gregDate->year()."\n"; echo 'Date type: '.$gregDate->type."\n"; $gregDate = \BahaiCalendar\BadiCal\Convert::BadiToGregorian( 172, //Badi year 1, //Badi month 1, //Badi date, FALSE //Note the difference ); echo $gregDate->year().'-'.$gregDate->month(true /* add zero */).'-'.$gregDate->day(true /* add zero */)."\n";
输出
March 20, 2015
Date type: GREGORIAN
2015-03-21
日期对象
\BahaiCalendar\BadiCal\Date 类有以下
方法
year($formatted) @param bool formatted - [可选,默认=false] 用零填充输出 @return 年份
month($formatted) @param bool formatted - [可选,默认=false] 用零填充输出 @return 月份
monthName() @return 根据相应日历的月份名称
day($formatted) @param bool formatted - [可选,默认=false] 用零填充输出 @return 日期
属性
type 要么是 \BahaiCalendar\BadiCal\Date::GREGORIAN ('GREGORIAN'),要么是 \BahaiCalendar\BadiCal\Date::BADI ('BADI')
静态值 / 方法
\BahaiCalendar\BadiCal\Date::GREGORIAN: 'GREGORIAN',用于 Date->type
\BahaiCalendar\BadiCal\Date::BADI: 'BADI',用于 Date->type
\BahaiCalendar\BadiCal\Date::BADI_MONTHS: 包含 Ayyam-i-Há 的巴迪历月份名称数组(基于零)。
\BahaiCalendar\BadiCal\Convert::getAyyamiha($badi_year): @param badi_year - 巴迪历年份 @return \BahaiCalendar\BadiCal\Date
测试
您必须拥有 BadiTest 仓库以测试库。简单使用 test.php 来运行来自 BadiTest 的测试组,通过指定测试组文件的路径,例如
php test.php /path/to/BadiTest/Basic.json
这将当前导致
Test Group: Basic
-----------------
Naw Ruz........................success
First day of Ridvan............success
Ninth day of Ridvan............success
Twelfth day of Ridvan..........success
Declaration of the Báb........success
Ascension of Bahá'u'lláh.....success
Martyrdom of the Báb..........success
Day of the Covenant............success
Ascension of 'Abdu'l-Bahá.....success
Ala 1st........................success
Failure Check..................success
11 tests, 0 failures, 11 successes