专业维基 / edtf
PHP 库,用于解析、表示和操作遵循扩展日期/时间格式规范的日期。
3.0.1
2024-05-03 13:30 UTC
Requires
- php: ^7.4|^8
- ext-json: *
- nesbot/carbon: ^2.41
- symfony/polyfill-php80: ^1.18.1
Requires (Dev)
- phpstan/phpstan: ^0.12.74
- phpunit/phpunit: ^9.5.2
- vimeo/psalm: ^4.4.1
This package is auto-updated.
Last update: 2024-09-19 12:11:01 UTC
README
EDTF PHP 是一个小型库,用于解析、表示和处理 扩展日期/时间格式 规范。
EDTF PHP 由 Professional.Wiki 创建并维护。初始开发由卢森堡文化部资助。这是一个开源项目,欢迎贡献!
使用方法
解析
$parser = \EDTF\EdtfFactory::newParser(); $parsingResult = $parser->parse('1985-04-12T23:20:30'); $parsingResult->isValid(); // true $parsingResult->getEdtfValue(); // \EDTF\EdtfValue $parsingResult->getInput(); // '1985-04-12T23:20:30'
验证
$validator = \EDTF\EdtfFactory::newValidator(); $validator->isValidEdtf('1985-04-12T23:20:30'); // true
人性化
$humanizer = \EDTF\EdtfFactory::newHumanizerForLanguage( 'en' ); $humanizer->humanize($edtfValue); // string
对象模型
$edtfValue->getMax(); // int $edtfValue->getMin(); // int $edtfValue->covers(\EDTF\EdtfValue $anotherValue); // bool
$edtfDate->getYear(); // int $edtfDate->isOpenInterval(); // bool $edtfDate->getQualification(); // \EDTF\Qualification
EDTF 支持和限制
所有级别 0、1 和 2 的 EDTF 格式都可以解析和表示,除了以下情况:
- 带有日期的开放范围(级别 2:资格):
..2004-06-01/2004-06-20
(此为支持:../2004-06-20
)
人性化有更多限制
- 有效数字(EDTF 级别 2):
1950S2
(1900 年至 1999 年之间的某个年份,估计为 1950 年) - 分组资格(EDTF 级别 2):
2004-06~-11
(年份和月份大致相同) - 单个组件的资格(EDTF 级别 2):
?2004-06-~11
(年份不确定;月份已知;日期大致相同) - 级别 2 未指定数字:
1XXX-1X
(1000 年代期间的 10 月、11 月或 12 月)
安装
要在项目中使用 EDTF 库,只需将 professional-wiki/edtf 依赖项添加到项目的 composer.json
文件中。以下是一个仅定义对 EDTF 1.x 依赖项的最小 composer.json
文件示例
{ "require": { "professional-wiki/edtf": "~1.0" } }
开发
首先通过执行以下命令安装项目依赖项
composer update
您可以通过执行以下命令运行测试
make test
您可以通过执行以下命令运行样式检查和静态分析
make cs
要运行所有 CI 检查,请执行
make
您还可以直接调用 PHPUnit 并传递参数,如下所示
vendor/bin/phpunit --filter SomeClassNameOrFilter
发布说明
版本 3.0.1 - 2024-05-03
- 修复了在组合近似资格时的“未定义数组键”警告
- 改进了翻译
版本 3.0.0 - 2023-01-18
功能更改
- 改进了不确定和近似日期的人性化
- 改进了人性化中的大写,尤其是法语
- 来自 TranslateWiki 的各种翻译更新,提高了许多语言的人性化
- 增加了人性化中的复数化支持,供 TranslateWiki 使用
破坏性 API 变更
- 删除了
ExtDate::uncertain
的参数 - 删除了
ExtDate::approximate
的参数 - 将
FrenchStrategy
重命名为DefaultStrategy
- 使
Qualification
构造函数参数为必需
进一步 API 变更
- 弃用
ExtDate::uncertain
,改用ExtDate::isUncertain
- 弃用
ExtDate::approximate
,改用ExtDate::isApproximate
- 添加了
Qualification::newFullyKnown
- 添加了
Qualification::isFullyKnown
- 添加了
Qualification::dayIsKnown
- 添加了
Qualification::monthIsKnown
- 添加了
Qualification::yearIsKnown
- 添加了
Qualification::isUncertain
,替换了Qualification::uncertain
- 添加了
Qualification::dayIsUncertain
- 添加了
Qualification::monthIsUncertain
- 添加了
Qualification::yearIsUncertain
- 添加了
Qualification::isApproximate
,替换了Qualification::approximate
- 添加了
Qualification::dayIsApproximate
- 添加了
Qualification::monthIsApproximate
- 添加了
Qualification::yearIsApproximate
- 添加了
Qualification::isUniform
- 添加了
Qualification::monthAndYearHaveTheSameQualification
- 添加了
ExtDate::isUniformlyQualified
版本 2.0.2 - 2022-04-29
- 改进了翻译
版本 2.0.1 - 2022-02-19
?
将不再被识别为有效日期
版本 2.0.0 - 2021-04-28
- 修复了对于像
1000-01-01..2000-12-30
这样具有大范围元素的集合的性能问题 - 修复了包含至少一个开放范围的多个元素的集合的格式化问题
- 改进了像
2000..2010
这样的范围元素的格式化 - 现在拒绝结束日期早于开始日期的区间和集合范围
- 对
Set
类进行了各种破坏性更改- 构造函数签名已更改
- 移除了
hasOpenStart
和hasOpenEnd
- 移除了
isSingleElement
- 添加了
Set::isEmpty
- 添加了
Set::getElements
- 添加了具有实现的
SetElement
接口OpenSetElement
RangeSetElement
SingleDateSetElement
ExtDate::precision
和Season::precision
现在将保证返回一个整数ExtDate
和Season
中的precisionAsString
现在将保证返回一个非空字符串
版本 1.3.0 - 2021-04-26
- 修复了区间中的季节支持
- 修复了解析带有额外空格的开放集合,如
{ ..2021}
(感谢 @chaudbak) - 添加了
ExtDate::iso8601
和ExtDateTime::iso8601
(感谢 @seth-shaw-unlv) - 添加了
ParsingResult::getErrorMessage
版本 1.2.0 - 2021-04-16
- 改进了开放集合的格式化
版本 1.1.0 - 2021-03-20
- 将国际化添加到
StructuredHumanizer
服务中 - 修复了处理 "公元0年" 的问题
版本 1.0.0 - 2021-03-19
- 首次发布,具有以下功能
- 支持EDTF级别0、1和2
- 解析
- 对象模型
- 国际化格式化
- 验证服务
- 示例数据