jimmiw / php-time-ago
简单模块,用于以“时间前”的格式显示日期
Requires
- php: >=7.0.0
Requires (Dev)
- phpmd/phpmd: @stable
- phpunit/phpunit: ^6
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2024-09-10 11:53:48 UTC
README
入门
该软件包可在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依赖项。
关于
受以下评论的启发
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)
特此授予任何获得本软件及其相关文档文件(“软件”)副本的人免费处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供方提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任是基于合同、侵权或其他原因,是否因软件或其使用或其它交易而产生。