technodelight / php-time-ago
简单模块,用于以“时间前”的格式显示日期
Requires
- php: >=5.4
Requires (Dev)
- phpspec/phpspec: ^2.3
README
TimeAgo 是一个轻量级且动态的库,能够将 DateTime
对象以整洁的“时间前”字符串形式显示。
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
以上示例使用的是默认的 RuleSet
,但您可以根据需要自定义
$ruleSet = new Technodelight\TimeAgo\Translation\RuleSet;
$ruleSet->add(
new Rule(
'aboutOneDay', // rule name, which would be used as a translation key
'23hour' // timespan, as a limit, without spaces between numerics and time. Check DefaultRuleSet for examples
),
new Formatter(
'day', // duration type, according to durations in \Technodelight\TimeAgo\Translation\SecondsDurationMap
'floor' // strategy (function) to use for calculating the amount. In this example "days" are calculated with floor()
)
);
$timeAgo = new Technodelight\TimeAgo(
new DateTime('-1 hour'),
new Technodelight\TimeAgo\Translator(
new Technodelight\TimeAgo\Translation( // this only needs an array as an input
[
'aboutOneDay' => 'About one day'
]
),
$ruleSet
)
);
$timeAgo->inWords(); // => About one day
以下示例展示了 TimeAgo 的可定制性
// with all dependencies injected:
$translationLoader = new Technodelight\TimeAgo\TranslationLoader; // can load built-in translations
$timeAgo = new Technodelight\TimeAgo(
new DateTime('-1 hour'), // static datetime
new Technodelight\TimeAgo\Translator(
$translationLoader->load('hu') // use a fixed translation
)
);
// or simply:
$timeAgo = Technodelight\TimeAgo::withTranslation(new \DateTime('-1 hour'), 'hu');
$timeAgo->inWords(); // => körülbelül 1 órája
在上面的示例中,您可以传递此存储库提供的任何翻译。所有荣誉归于 Jimmi Westerberg 以及他的存储库的贡献者。
默认情况下,TimeAgo
使用当前系统语言作为指南来确定所需的翻译文件,如果此信息无法成功解决,则默认为英文。当然,您可以在需要时传递自己的翻译
$timeAgo = new Technodelight\TimeAgo(
new DateTime('-1 hour'),
new Technodelight\TimeAgo\Translator(
['aboutOneHour' => 'Happened an hour ago! Arrr! Arrr!']
)
);
$timeAgo->inWords(); // => Happened an hour ago! Arrr! Arrr!
致谢
此存储库受 Jimmi Westerberg 的原始作品启发(http://westsworld.dk),他的存储库可在 https://github.com/jimmiw/php-time-ago 找到。
许可协议
MIT 许可协议 (MIT)
版权所有 © 2018 Zsolt Gál
在此特此免费授予任何获得本软件及其相关文档文件(“软件”)副本的任何人(以下简称“许可方”),在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向提供软件的人员授权进行此类行为,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
本软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他方式引起的,无论是从软件或软件的使用或其它交易中产生的。
原始许可协议
MIT 许可协议
版权所有 © 2014 Jimmi Westerberg (http://westsworld.dk)
在此特此免费授予任何获得本软件及其相关文档文件(“软件”)副本的任何人(以下简称“许可方”),在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向提供软件的人员授权进行此类行为,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
本软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他方式引起的,无论是从软件或软件的使用或其它交易中产生的。