kfirba / hebdate
一个将犹太日期转换为公历日期以及相反的库
v1.0
2019-10-17 06:37 UTC
Requires
- php: >=7.2
Requires (Dev)
- nesbot/carbon: ^2.0.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-17 17:12:33 UTC
README
Hebdate是一个简单的库,它允许您使用多种格式轻松地将公历日期转换为犹太日期,反之亦然。
安装
通过composer安装此包
composer require kfirba/hebdate
基本用法
让我们转换一些日期
// Note that we should pass the date as dd/mm/yyyy format: GregorianDate::toJewish([5, 6, 2016])->convert(); // -> 28 9 5776 GregorianDate::toJewish('05/06/2016')->convert(); // -> 28 9 5776 GregorianDate::toJewish(Carbon::createFromDate(2016, 6, 5))->convert(); // -> 28 9 5776 GregorianDate::toJewish(new DateTime('2016-06-05'))->convert(); // -> 28 9 5776
当然,我们可以反过来使用它
GregorianDate::fromJewish('28 9 5776')->convert(); // -> 05/06/2016 GregorianDate::fromJewish('28 Iyar 5776')->convert(); // -> 05/06/2016 GregorianDate::fromJewish('כח אייר התשעו')->convert(); // -> 05/06/2016 GregorianDate::fromJewish('כח׳ אייר התשע״ו')->convert(); // -> 05/06/2016
实际上,在幕后我们使用两个类,您可以选择您想要使用的任何一个,即GregorianDate
类和JewishDate
类。
通过调用GregorianDate::fromJewish()
,您实际上创建了一个JewishDate
实例。因此,它与以下相同
JewishDate::toGregorian('28 9 5776')->convert(); // -> 05/06/2016
正如您可能已经猜到的,您也可以调用
JewishDate::fromGregorian('05/06/2016')->convert(); // -> 28 9 5776
输入
正如我们之前所看到的,这些类接受不同的输入格式
-
GregorianDate::toJewish(INPUT_TYPE)
:- 数组 - 一个表示日期的[dd, mm, yyyy]格式的普通PHP数组。
- 字符串 - 格式为mm/dd/yyyy的公历日期字符串。分隔符可以是斜杠(/)、点(.)或破折号(-)。例如:05-06-2016。
- Carbon对象 - 任何Carbon对象。
- DateTime对象 - 任何DateTime对象。
-
JewishDate::fromGregorian(INPUT_TYPE)
:- 具有与
GregorianDate::toJewish(INPUT_TYPE)
相同的选项,因为它是别名。
- 具有与
-
JewishDate::toGregorian(INPUT_TYPE)
:- 数组 - 包含[dd, mm, yyyy]格式的希伯来日期的数组。
- 数字字符串 - 格式为"dd mm yyyy"的数字字符串(注意分隔符必须是空格)。例如,28 9 5776。
- 英文月份数字字符串 - 包含英文月份名称的数字字符串。例如,28 Iyar 5776。
- 完整的希伯来日期字符串 - 没有标点的完整希伯来字符串。例如,כח אייר התשעו。
- 带标点的完整希伯来日期字符串 - 带标点的完整希伯来字符串。例如,כח׳ אייר התשע״ו。
-
GregorianDate::fromJewish(INPUT_TYPE)
:- 具有与
JewishDate::toGregorian(INPUT_TYPE)
相同的选项,因为它是别名。
- 具有与
输出
我们还可以指定我们想要的日期的输出格式。要做到这一点,我们只需链式调用format()
方法并传递一个格式。
请注意,格式常量位于Kfirba\Formats\Format
类下。
犹太日期格式
GregorianDate::toJewish('05/06/2016')->format(Format::NUMERIC)->convert(); // The default format -> 28 9 5776 GregorianDate::toJewish('05/06/2016')->format(Format::ENGLISH_MONTH)->convert(); // -> 28 Iyar 5776 GregorianDate::toJewish('05/06/2016')->format(Format::HEBREW_FULL)->convert(); // -> כח אייר התשעו GregorianDate::toJewish('05/06/2016')->format(Format::PRESENTABLE_HEBREW_FULL)->convert(); // -> כח׳ אייר התשע״ו // These formats also apply when using the JewishDate::fromGregorian() constructor: JewishDate::fromGregorian('05/06/2016')->format(Format::NUMERIC)->convert(); // The default format -> 28 9 5776 JewishDate::fromGregorian('05/06/2016')->format(Format::ENGLISH_MONTH)->convert(); // -> 28 Iyar 5776 JewishDate::fromGregorian('05/06/2016')->format(Format::HEBREW_FULL)->convert(); // -> כח אייר התשעו JewishDate::fromGregorian('05/06/2016')->format(Format::PRESENTABLE_HEBREW_FULL)->convert(); // -> כח׳ אייר התשע״ו
公历日期格式
JewishDate::toGregorian('28 9 5776')->format(Format::NUMERIC)->convert(); // The default format -> 05/06/2016 JewishDate::toGregorian('28 9 5776')->format(Format::CARBON)->convert(); // -> Carbon Object {} JewishDate::toGregorian('28 9 5776')->format(Format::DATETIME)->convert(); // -> DateTime Object {} // These formats also apply when suing the GregorianDate::fromJewish() constructor: GregorianDate::fromJewish('28 9 5776')->format(Format::NUMERIC)->convert(); // The default format -> 05/06/2016 GregorianDate::fromJewish('28 9 5776')->format(Format::CARBON)->convert(); // -> Carbon Object {} GregorianDate::fromJewish('28 9 5776')->format(Format::DATETIME)->convert(); // -> DateTime Object {}
其他
该convert()
方法接受一个$delimiter
参数。在转换为犹太日期时默认为空格(" "),在转换为公历日期时默认为斜杠(/)。
该库还注册了2个全局函数
utf8_str_split($str = '', $len = 0)
,该函数与PHP的str_split
函数作用相同,但适用于UTF8字符串。isJewishLeapYear($year)
,该函数确定给定年份是否为闰年。请注意,年份必须是大于5000的数字。
许可证
Hebdate包是一个开源项目,许可协议为MIT许可。