smirik / php-datetime-ago
文本格式中的时间间隔有多久以前
v1.1.0
2015-09-08 16:53 UTC
Requires
- php: >=5.3.3
Requires (Dev)
- phpspec/phpspec: 2.0.*@dev
This package is not auto-updated.
Last update: 2024-09-14 13:53:03 UTC
README
这个库帮助将日期/时间间隔格式化为文本。
示例
请注意,并非每个翻译器都支持周、月和年
使用方法
DateTimeAgo 类有一个公共方法 get。它接受 1 个必需参数(\DateTime 对象)和 1 个可选参数(参考日期。如果它是 null,则使用当前时间)。
<?php $date_ago = new \Smirik\PHPDateTimeAgo\DateTimeAgo(); $date_ago->get(new \DateTime('-24 hours')); /* returns "1 day ago" */ $date_ago->get(new \DateTime('-69 minutes')); /* returns "1 hour ago" */ $date_ago->get(new \DateTime('-100 minutes')); /* returns "2 hours ago" */ $date_ago->get(new \DateTime('-155 minutes')); /* returns "3 hours ago" */
俄语翻译
<?php $date_ago = new \Smirik\PHPDateTimeAgo\DateTimeAgo(new \Smirik\PHPDateTimeAgo\TextTranslator\RussianTextTranslator()); $date_ago->get(new \DateTime('-24 hours')); /* returns "1 день назад" */ $date_ago->get(new \DateTime('-69 minutes')); /* returns "1 час назад" */ $date_ago->get(new \DateTime('-100 minutes')); /* returns "2 часа назад" */ $date_ago->get(new \DateTime('-155 minutes')); /* returns "3 часа назад" */
自定义
超过 6 天的日期格式化器
<?php ... $date_ago->setFormat('d.m.Y H:i:s');
以 01.01.2001 22:52:12 的格式设置日期。
自定义翻译器
DateTimeAgo 构造函数接受 TextTranslator 文件作为第一个参数。默认情况下提供 EnglishTextTranslator。您可以将自定义翻译器添加到该构造函数中。只需确保您的类实现了 Smirik\PHPDateTimeAgo\TextTranslator\TextTranslatorInterface。还有基于复数化过程的基于标准的翻译方式。这些方法已经在 AbstractTextTranslator 类中实现。英文和俄语样本已包含在此软件包中。您也可以在创建后更改翻译器
<?php ... $date_ago->setTextTranslator(new \Smirik\PHPDateTimeAgo\TextTranslator\RussianTextTranslator());
实现
测试
代码的大部分内容通过 phpspec 进行测试。要运行测试,请克隆存储库并运行
$ php bin/phpspec run
开发工作流程
- 为了保持 git 版本控制准确,请使用 git-flow 模式。
- 因此,除了热修复之外的所有拉取请求都应该发送到 develop 分支。
- 热修复应该同时发送到两个开发分支:develop 和 master。
贡献
欢迎任何贡献。
致谢
- Symfony 烹饪书中的 俄语复数化规则。