haltsir/semantic-date

人类可读的日期

1.0.0 2023-04-13 14:20 UTC

This package is auto-updated.

Last update: 2024-09-13 17:45:46 UTC


README

语义日期是一个PHP库,它提供了一个简单的方法将日期转换为人类可读的语义表达式。这个库与框架无关,但包括与Laravel框架集成的具体说明。该包支持两种日历类型:东正教和公历。

目录

要求

  • PHP >= 8.0
  • Composer

安装

要安装语义日期库,请使用以下Composer命令

composer require haltsir/semantic-date

使用

要使用语义日期库,首先创建DateConverter类的实例,然后调用convert方法,传入您要转换的日期

use Haltsir\SemanticDate\DateConverter;

$converter = new DateConverter();
$semanticDate = $converter->convert(new DateTime('your date here'));

您还可以向DateConverter构造函数传递额外的选项,例如自定义节假日、排除日期条件以及日历类型。该包支持东正教(默认)和公历。要使用特定的日历,请设置calendarType选项。

默认情况下,区域设置为 'en'(英语)。该库使用提供的区域设置来确定节假日和其他日期相关表达式的翻译。您可以通过将区域设置作为DateConverter构造函数的第二个参数传递来更改默认区域设置。

Laravel

要在Laravel中设置,请按照以下步骤操作

  1. 将服务提供者添加到providers数组中
'providers' => [
    // ...
    Haltsir\SemanticDate\SemanticDateServiceProvider::class,
],
  1. 将外观添加到aliases数组中
'aliases' => [
    // ...
    'SemanticDate' => Haltsir\SemanticDate\Facades\SemanticDateFacade::class,
],

现在您可以在Laravel应用程序中使用SemanticDate外观

use SemanticDate;

$date = new DateTime('2023-04-10');
$convertedDate = SemanticDate::convert($date);

示例

以下是使用语义日期库的一些示例

基本用法

use Haltsir\SemanticDate\DateConverter;

$converter = new DateConverter();
echo $converter->convert(new DateTime('today')); // Output: Today
echo $converter->convert(new DateTime('yesterday')); // Output: Yesterday

自定义节假日

use Haltsir\SemanticDate\DateConverter;

$configuration = [
    'customHolidays' => ['27-12' => 'Stefan Name Day']
];

$converter = new DateConverter($configuration);
echo $converter->convert(new DateTime('2023-12-27')); // Output: Stefan Name Day

排除日期条件

use Haltsir\SemanticDate\DateConverter;
use Haltsir\SemanticDate\DateConditions\Today;

$configuration = [
    'excludedDateConditions' => [Today::class]
];

$converter = new DateConverter($configuration);
echo $converter->convert(new DateTime('today')); // Output: the actual date instead of "Today"

更改日历类型和区域

use Haltsir\SemanticDate\DateConverter;
use Haltsir\SemanticDate\CalendarType;

$configuration = [
    'calendarType' => CalendarType::CATHOLIC
];

$converter = new DateConverter($configuration, 'fr');
echo $converter->convert(new DateTime('2023-04-09')); // Output: Pâques (Catholic Easter in French)

自定义复活节观察

您也可以设置方法为 'none'。

use Haltsir\SemanticDate\DateConverter;
use Haltsir\SemanticDate\CalendarType;

$configuration = [
    'calendarType' => CalendarType::CUSTOM
];

$converter = new DateConverter(['calendarType' => CalendarType::CUSTOM, 'easterMethod' => 'MyClass::myMethod']);

Laravel集成

要将语义日期库与Laravel应用程序集成,请按照以下步骤操作

  1. 使用以下Artisan命令发布配置和语言文件
php artisan vendor:publish --provider="Haltsir\SemanticDate\SemanticDateServiceProvider"
  1. 修改发布的配置文件(config/semantic-date.php),以自定义库的行为,例如默认节假日和其他设置。
  2. 如果您想添加自己的自定义翻译,在您的应用程序的lang目录中创建一个新的翻译文件。例如,如果您想添加英语的自定义翻译,在resources/lang/en目录中创建一个semantic-date.php文件,并将您的翻译添加到其中。
  3. 在您的Laravel应用程序中,按照使用和示例部分使用语义日期库。库将自动检测Laravel应用程序配置中设置的区域设置(config/app.php)。如果您想为DateConverter类的特定实例更改区域设置,请将所需的区域设置作为构造函数的第二个参数传递
use Haltsir\SemanticDate\DateConverter;
use Haltsir\SemanticDate\CalendarType;

$configuration = [
    'calendarType' => CalendarType::CATHOLIC
];

$converter = new DateConverter($configuration, 'es');
echo $converter->convert(new DateTime('2023-04-16')); // Output: Pascua Ortodoxa (Orthodox Easter in Spanish)

贡献

欢迎为语义日期库做出贡献!要做出贡献,请按照以下步骤操作

  1. 在GitHub上分叉存储库。
  2. 为您的更改创建一个新的分支。
  3. 使用Pest测试框架为您的更改编写详细的测试。
  4. 提交带有您提出的更改或功能请求的拉取请求。

如果您遇到任何问题或需要帮助,请随时创建问题或联系维护者寻求帮助。