kfirba/hebdate

一个将犹太日期转换为公历日期以及相反的库

v1.0 2019-10-17 06:37 UTC

This package is auto-updated.

Last update: 2024-09-17 17:12:33 UTC


README

Version Status

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):

    1. 数组 - 一个表示日期的[dd, mm, yyyy]格式的普通PHP数组。
    2. 字符串 - 格式为mm/dd/yyyy的公历日期字符串。分隔符可以是斜杠(/)、点(.)或破折号(-)。例如:05-06-2016。
    3. Carbon对象 - 任何Carbon对象。
    4. DateTime对象 - 任何DateTime对象。
  • JewishDate::fromGregorian(INPUT_TYPE):

    1. 具有与GregorianDate::toJewish(INPUT_TYPE)相同的选项,因为它是别名。
  • JewishDate::toGregorian(INPUT_TYPE):

    1. 数组 - 包含[dd, mm, yyyy]格式的希伯来日期的数组。
    2. 数字字符串 - 格式为"dd mm yyyy"的数字字符串(注意分隔符必须是空格)。例如,28 9 5776。
    3. 英文月份数字字符串 - 包含英文月份名称的数字字符串。例如,28 Iyar 5776。
    4. 完整的希伯来日期字符串 - 没有标点的完整希伯来字符串。例如,כח אייר התשעו。
    5. 带标点的完整希伯来日期字符串 - 带标点的完整希伯来字符串。例如,כח׳ אייר התשע״ו。
  • GregorianDate::fromJewish(INPUT_TYPE):

    1. 具有与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个全局函数

  1. utf8_str_split($str = '', $len = 0),该函数与PHP的str_split函数作用相同,但适用于UTF8字符串。
  2. isJewishLeapYear($year),该函数确定给定年份是否为闰年。请注意,年份必须是大于5000的数字。

许可证

Hebdate包是一个开源项目,许可协议为MIT许可。