proger / datefmt
日期格式化单元。支持相对时间(如“1天前”),使用易于记忆的格式字符串(如“d#”代表天,“D__”代表其名称)并支持自然本地化。
dev-master
2015-02-13 10:38 UTC
Requires
- ext-mbstring: *
This package is not auto-updated.
Last update: 2024-09-28 14:27:54 UTC
README
DateFmt 是一个易于使用的(主要是单方法)区域感知的日期格式化类,支持国家日期/时间格式和相对时间(如“1天前”)。它专注于易于记忆的格式字符串(hello, date()
和 strftime()
)。
[ 完整语法 & API ]
更新于2014年2月16日:修复了 AGO[]
中的多个错误,添加了一些注释并重新格式化了代码。还可能以 camelCase()
的方式调用 PascalCase()
方法,归功于神奇的 __call()
。升级与旧版本完全兼容,因此强烈推荐。
功能
- 基本格式化:
d#
(天),d##
(零填充),D_
(“Mon”),D__
(“Monday”),等。 - 相对时间:
AGO[*]
= 1分钟,2天前等。 - 相对精确:
AGO[d.h]
= 1天3小时前 - 相对简短:
AGO-SHORT[d.h]
= 1d 3h前 - 接近现在时使用相对时间,否则使用完整时间:
AGO[t]IF-FAR[d##my]
- 输出“3小时前”或如果时间戳在过去24小时内,则输出完整时间字符串(“03/23/2012”) - 抑制“ago/after”:
AGO[*]_
= 1天3小时
自然语言功能
- 分数(例如0.45小时前)被翻译成“半小时前”
- 使用“at”指示时间:
[d#.m#.y##]AT h#:m##
- 以英语输出“23.3.2012 at 13:23”或以俄语输出“23.3.2012 в 13:23”。请注意,即使语言不同,格式字符串也不需要更改 - 所有格形式(英语中不使用):发布于
AT[D__]
= 发布于星期三 = Добавлено в среду - 与Posted on D__
进行比较,其中它将是“Добавлено в среда”(不是正确的词形)
用法
$your_timestamp = 158399691; // => Wednesday, 08/01/1975 $formatted = DateFmt::Format('D__, d##my', $your_timestamp, 'ru'); // You could also call DateFmt::format().
第一个参数是格式字符串,第二个参数是时间戳(省略时为 time()
),第三个参数是语言(省略时为 en
)。
安装
Composer
在 Packagist 下的 proger/datefmt
可用。
Laravel 3
像往常一样,使用 Artisan
php artisan bundle:install datefmt
然后将其放入您的 application/bundles.php
'datefmt' => array( 'autoloads' => array( 'map' => array('DateFmt' => '(:bundle)/datefmt.php') ) )
现在,每当您在代码中引用 DateFmt
时,其类将被自动加载。
限制
- 不支持嵌套规则:
[...]?|AGO[s-d]IF-FAR[[d#my]AT h#m]
- 不支持多个 IF:
AGO[d]IF>7[..]IF>21[..]IF>...
- 不允许空 IF:
AGO[h] AGO[h]IF>0[]IF>3[ (AGO[d]_)]
(这将创建11小时前
和74小时前(2天)
)