jimmiw/php-time-ago

简单模块,用于以“时间前”的格式显示日期

3.2.4 2022-09-02 12:39 UTC

README

Latest Stable Version Total Downloads Build Status License OpenCollective OpenCollective

入门

该软件包可在Github和Packagist上获取

安装

使用composer,您可以执行以下操作

composer require jimmiw/php-time-ago

使用组件

获取“时间前”的单词表示有两种方法。

通过传递DateTime对象

$timeAgo = new Westsworld\TimeAgo();
echo $timeAgo->inWords(new DateTime("2010-01-10 23:05:00"));

通过传递字符串

$timeAgo = new Westsworld\TimeAgo();
echo $timeAgo->inWordsFromStrings("2010/1/10 23:05:00");

两种方法都给出相同的答案,并使用相同的内部逻辑。

您想得到实际的年、月、日、小时、分钟、秒的差异吗?

那您就有好运气了!我实现了一个小功能,可以为您做到这一点。只需做以下操作

$timeAgo = new Westsworld\TimeAgo();
// NOTE: this is actually deprecated, since DateTime does the same. Still works though :)
$dateDifferenceArray =  $timeAgo->dateDifference("2017-03-02 07:53:00", "2017-03-02 07:53:01");

这将返回一个包含以下数据的数组

[
	'years' => 0
	'months' => 0
	'days' => 0
	'hours' => 0
	'minutes' => 0
	'seconds' => 1
]

如何确定“之前”是什么

  0 <-> 29 secs                                                             # => less than a minute
  30 secs <-> 1 min, 29 secs                                                # => 1 minute
  1 min, 30 secs <-> 44 mins, 29 secs                                       # => [2..44] minutes
  44 mins, 30 secs <-> 89 mins, 29 secs                                     # => about 1 hour
  89 mins, 29 secs <-> 23 hrs, 59 mins, 29 secs                             # => about [2..24] hours
  23 hrs, 59 mins, 29 secs <-> 47 hrs, 59 mins, 29 secs                     # => 1 day
  47 hrs, 59 mins, 29 secs <-> 29 days, 23 hrs, 59 mins, 29 secs            # => [2..29] days
  29 days, 23 hrs, 59 mins, 30 secs <-> 59 days, 23 hrs, 59 mins, 29 secs   # => about 1 month
  59 days, 23 hrs, 59 mins, 30 secs <-> 1 yr minus 1 sec                    # => [2..12] months
  1 yr <-> 2 yrs minus 1 secs                                               # => about 1 year
  2 yrs <-> max time or date                                                # => over [2..X] years

自上次版本以来的更改

自上次版本以来有很多变化。不再支持WWDateTime类。我实现了一个新类,它接受时间字符串作为参数(如果需要,还有时区),并计算它们之间的时间。

应“lsolesen”(github上的一个人)的要求,我移除了整个DateTime依赖项。

关于

受以下评论的启发

http://dk.php.net/time

https://api.rubyonrails.cn/classes/ActionView/Helpers/DateHelper.html#M001695

您真的应该查看Carbon项目,它看起来非常好,提供了相同的功能以及更多。

这个类是为了提供与DateTime::diff相同的功能。

添加了翻译

版本0.4.x是主要的翻译发布。

现在您可以使用timeAgo->inWords()或timeAgoInWords()方法将返回的文本进行翻译。翻译简单地在类初始化或timeAgoInWords()方法末尾添加一个语言代码字符串。

使用丹麦翻译的示例

$myLang = new \Westsworld\TimeAgo\Translations\Da();

$timeAgo = new Westsworld\TimeAgo($myLang); // default language is en (english)
echo $timeAgo->inWords("2010/1/10 23:05:00");

可用的翻译语言

您可以在/src/Westsworld/TimeAgo/Translations/文件夹内查看可用的列表文件。

变更日志

有关更改的完整列表,请参阅Changelog.md

赞助商

通过每月捐赠支持我们,帮助我们继续我们的活动。[成为赞助商]

赞助商

成为赞助商,让您的标志出现在我们的README上,并提供到您网站的链接。[成为赞助商]

MIT许可

版权所有 © 2014 Jimmi Westerberg (http://westsworld.dk)

特此授予任何获得本软件及其相关文档文件(“软件”)副本的人免费处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供方提供软件的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任是基于合同、侵权或其他原因,是否因软件或其使用或其它交易而产生。