h4kuna / date-filter
为 latte 添加定义基于日期的过滤器的选项。
v1.0.1
2022-05-27 10:47 UTC
Requires
- php: >= 7.1
- symfony/polyfill-php73: ^1.10
Requires (Dev)
- latte/latte: ~2.0
- nette/application: ~3.0
- nette/bootstrap: ~3.0
- nette/tester: ^2.1
- phpstan/phpstan: ^0.11
- tracy/tracy: ^2.6
Suggests
- latte/latte: If you want to use Nette extension in templates.
- nette/application: If you want to use Nette extension in templates.
- nette/bootstrap: If you want to use Nette extension in templates.
This package is auto-updated.
Last update: 2024-09-08 12:58:56 UTC
README
替代
查看库 Format,具体查看 日期格式化。扩展应该能帮助您避免手动打印和组合对象,但目前我没有时间来做这件事,所以我将展示如何手动完成,分为三步。
- 安装库
composer require h4kuna/number-format
- 在 neon 中编写自己的格式集合
services: format.date: factory: h4kuna\Format\Date\Formatters\DateTimeFormatter('j. n. Y') autowired: false format.time: factory: h4kuna\Format\Date\Formatters\DateTimeFormatter('H:i:s') autowired: false # budete-li potřebovat formátovat kdekoliv v projektu, použijte tento Accessor number.formats: h4kuna\Format\Date\FormatsAccessor( date: @format.date time: @format.time ) latte.latteFactory: setup: - addFilter('date', @format.date) - addFilter('time', @format.time)
- 在模板中则可以这样使用
{=(new DateTime())|date}<br> {=(new DateTime())|time}
需要 PHP 5.4+。
此扩展用于 php Nette 框架。
项目安装
使用 composer 安装 h4kuna/date-filter 是最佳方式
$ composer require h4kuna/date-filter
如何使用
在 neon 配置文件中注册 Nette 扩展。
extensions: dateFilterExtension: h4kuna\DateFilter\DI\DateFilterExtension
现在我将展示如何设置新的日期过滤器和其他变体。
您可以覆盖默认的 latte 过滤器 date!
定义格式时,请使用 date 函数 中的字母。
您可以设置自己的过滤器组,例如
dateFilterExtension: formats: cze: # name of group is optional (i choose country) # filter name: format day: D date: j. n. Y # overwrite default latte filter dateTime: j. n. Y H:i:s uk: day: D date: d/m/Y dateTime: d/m/Y H:i:s
第一个组是默认组。现在在 latte 中您可以使用
{$date|dateTime}
{$date|day}
{$date|date}
您可以将此忘记并复制到需要的地方。
{$date|date:'j. n. Y H:i:s'}
对于不同的国家,您可以更改日期格式。并且可以通过
/* @var $dateTimeFormat h4kuna\DateFilter\DateTimeFormat */ $dateTimeFormat = $container->getService('dateFilterExtension.dateTimeFormat'); $dateTimeFormat->setFormatsGroup('uk'); $dateTimeFormat->format('dateTime', 'now'); // internaly call filter from latte
如果您不更改地区设置,则日期字母(D,l(小写L),F,M)始终为英文,好的,这里有一个如何更改它的例子。
dayMonth: cs: # name of group is optional (i choose language) it isn't same group above # days: l: # lower L long # original name: translate Monday: Pondělí Tuesday: Úterý Wednesday: Středa Thursday: Čtvrtek Friday: Pátek Saturday: Sobota Sunday: Neděle D: # short Mon: Po Tue: Út Wed: St Thu: Čt Fri: Pá Sat: So Sun: Ne # months: F: # long January: Leden February: Únor March: Březen April: Duben May: Květen June: Červen July: Červenec August: Srpen September: Září October: Říjen November: Listopad December: Prosinec M: # short Jan: Led Feb: Úno Mar: Bře Apr: Dub May: Kvě Jun: Čvn Jul: Čvc Aug: Srp Sep: Zář Oct: Říj Nov: Lis Dec: Pro en: [] # we don't need translate
第一个组是默认组。更改组如下
/* @var $dateTimeFormat h4kuna\DateFilter\DateTimeFormat */ $dateTimeFormat = $container->getService('dateFilterExtension.dateTimeFormat'); $dateTimeFormat->setDayMonthGroup('en'); $dateTimeFormat->format('day', 'now()');