h4kuna / date-filter

为 latte 添加定义基于日期的过滤器的选项。

v1.0.1 2022-05-27 10:47 UTC

This package is auto-updated.

Last update: 2024-09-08 12:58:56 UTC


README

Build Status Downloads this Month Latest stable Coverage Status

替代

查看库 Format,具体查看 日期格式化。扩展应该能帮助您避免手动打印和组合对象,但目前我没有时间来做这件事,所以我将展示如何手动完成,分为三步。

  1. 安装库 composer require h4kuna/number-format
  2. 在 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)
  1. 在模板中则可以这样使用
{=(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()');