smirik/php-datetime-ago

文本格式中的时间间隔有多久以前

v1.1.0 2015-09-08 16:53 UTC

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。

贡献

欢迎任何贡献。

致谢