org_heigl/daterange

提供显示日期范围的方法


README

这个小型库试图简化日期范围的打印。

Build Status Code Climate Test Coverage Coverage Status

安装

通过composer轻松安装。只需在您的终端中输入以下命令,将DateRange库添加到您的composer.conf文件中

composer require org_heigl/daterange

使用

然后,您可以通过创建DateRange实例、设置格式和分隔符,然后简单地调用getDateRange()(将开始日期和结束日期作为参数)来使用DateRange库。

简单示例

<?php
use Org_Heigl\DateRange\DateRangeFormatter

$dateRange = new DateRangeFormatter();
$dateRange->setFormat('d.m.Y');
$dateRange->setSeparator(' - ');
echo $dateRange->getDateRange(new \DateTime('12.3.2015'), new \DateTime('13.4.2015'));
// Will print: 12.03. - 13.04.2014
echo $dateRange->getDateRange(new \DateTime('12.3.2015'), new \DateTime('13.3.2015'));
// Will print: 12. - 13.03.2014

复杂示例

<?php
use Org_Heigl\DateRange\DateRangeFormatter

$dateRange = new DateRangeFormatter();
$dateRange->setFormat('m/d/Y');
$dateRange->setSeparator(' - ');
echo $dateRange->getDateRange(new \DateTime('12.3.2015'), new \DateTime('13.3.2015'));
// Will print: 3/12/ - 3/13/2014

您想更改日期格式化字符串的一部分?试试过滤器。

如果您想显示类似12 - 13.03.2013(注意12后面的点)的内容,您可以使用格式化字符串d.m.Y并添加一个类似这样的RemoveEverythingAfterLastDateStringFilter

<?php
use Org_Heigl\DateRange\DateRangeFormatter;
use Org_Heigl\DateRange\Filter\RemoveEverythingAfterLastDateStringFilter;

$dateRange = new DateRangeFormatter();
$dateRange->setFormat('d.m.Y');
$dateRange->setSeparator(' - ');
$dateRange->addFilter(new RemoveEverythingAfterLastDateStringFilter(), DateRangeFormatter::FILTER_FIRST_DIFF);
echo $dateRange->getDateRange(new \DateTime('12.3.2015'), new \DateTime('13.3.2015'));
// Will print: 12 - 13.03.2014

目前有以下过滤器可用

  • RemoveEverythingAfterLastDateStringFilter - 此过滤器将删除给定日期部分中最后的日期格式化字符之后的所有内容。因此,当日期格式化字符串为d.m.时,它将删除m后面的所有内容,其中m是最后的日期格式化字符。
  • TrimFilter - 此过滤器将删除多余的空白。它只是通过`trim`函数传递日期格式化字符串。

您可以通过简单地实现Org_Heigl\DateRange\DateRangeFilterInterface来实现自己的过滤器。这样,一切皆有可能!

您可以将过滤器添加到四个不同的过滤器链中,这些过滤器链用于过滤格式化字符串的不同部分。

  • DateRangeFormatter::FILTER_COMPLETE将在第一天和第二天相同的情况下应用于格式化字符串。因此,输入将是您通过DateRangeFormatter::setFormat()提供的格式化字符串。
  • DateRangeFormatter::FILTER_FIRST_DIFF将应用于用于开始日期的分割格式化字符串的第一部分。因此,当您的格式化字符串为d.m.Y且日期在月份上不同时,过滤器将应用于开始日期的d.m.
  • DateRangeFormatter::FILTER_SECOND_DIFF将应用于用于结束日期的分割格式化字符串的第一部分。因此,当您的格式化字符串为d.m.Y且日期在月份上不同时,过滤器将应用于结束日期的d.m.
  • DateRangeFormatter::FILTER_SAME将应用于用于在开始日期和结束日期上相同的部分的分割格式化字符串的第二部分。因此,当您的格式化字符串为d.m.Y且日期在日上不同时,过滤器将应用于m.Y