bahaicalendar/badical

用于在格里历和巴哈伊历之间转换的库。

1.0.0 2017-08-06 23:49 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:40:27 UTC


README

库,用于在格里历和巴迪 / 巴哈伊历之间转换。

之前位于 BadiCal,但该仓库正在BahaiCalendar 组中拆分为个别语言。

目前有

由于巴迪日期从日落开始,每次转换都有两种可能性。从格里历转换为巴迪历时,可以得到该格里历日的日落前或后的巴迪日期;默认为前者。从巴迪历转换为格里历时,可以得到该巴迪日期开始于或结束于午夜前的格里历日期;默认为后者。

例如,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