wwtg99/date_period

该包最新版本(0.1.3)没有可用的许可证信息。

生成日期时间段。

0.1.3 2017-09-22 05:31 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:42:03 UTC


README

生成一系列日期时间段,通常用于统计。基于日、周、月、年等时间段切分。

安装

composer require wwtg99/date_period

或者

"wwtg99/date_period": "*"

添加到composer.json

测试

在tests中的单元测试文件。在PHP 7.1上进行了测试。

用法

方法

  • DatePeriod::getPeriodArray($datePeriod, $start, $end, $dateFormat)
  • DatePeriod::getPeriodGenerator($datePeriod, $start, $end, $dateFormat)

参数

  • $datePeriod: 要分隔的周期,日、周、月、年...
  • $start: 开始时间字符串
  • $end: 结束时间字符串
  • $dateFormat: 日期格式(默认)或日期时间格式

示例

生成从起始日(包含)到结束日(不包含)之间的日数组

$start = '2017-09-01';
$end = '2017-09-10';
$arr = DatePeriod::getPeriodArray(DatePeriod::TYPE_PERIOD_DAY, $start, $end);

foreach ($arr as $item) {
    echo "Title: ", $item->getTitle(), " From: ", $item->getStartString(), " To: ", $item->getEndString(), "\n";
}

输出

Title: 2017-09-01 From: 2017-09-01 To: 2017-09-02
Title: 2017-09-02 From: 2017-09-02 To: 2017-09-03
Title: 2017-09-03 From: 2017-09-03 To: 2017-09-04
Title: 2017-09-04 From: 2017-09-04 To: 2017-09-05
Title: 2017-09-05 From: 2017-09-05 To: 2017-09-06
Title: 2017-09-06 From: 2017-09-06 To: 2017-09-07
Title: 2017-09-07 From: 2017-09-07 To: 2017-09-08
Title: 2017-09-08 From: 2017-09-08 To: 2017-09-09
Title: 2017-09-09 From: 2017-09-09 To: 2017-09-10
Title: 2017-09-10 From: 2017-09-10 To: 2017-09-11

生成从起始日(包含)到结束日(不包含)之间的月数组

$start = '2017-05-11';
$end = '2017-09-10';
$arr = DatePeriod::getPeriodArray(DatePeriod::TYPE_PERIOD_MONTH, $start, $end);

foreach ($arr as $item) {
    echo "Title: ", $item->getTitle(), " From: ", $item->getStartString(), " To: ", $item->getEndString(), "\n";
}

输出

Title: 2017-05 From: 2017-05-01 To: 2017-06-01
Title: 2017-06 From: 2017-06-01 To: 2017-07-01
Title: 2017-07 From: 2017-07-01 To: 2017-08-01
Title: 2017-08 From: 2017-08-01 To: 2017-09-01
Title: 2017-09 From: 2017-09-01 To: 2017-10-01

使用生成器而不是数组(通常用于非常长的时间段)

生成器支持PHP 7.0+

$start = '2017-07-11';
$end = '2017-09-10';
foreach (DatePeriod::getPeriodGenerator(DatePeriod::TYPE_PERIOD_WEEK, $start, $end) as $item) {
    echo "Title: ", $item->getTitle(), " From: ", $item->getStartString(), " To: ", $item->getEndString(), "\n";
}

输出

Title: 2017-07 W2 From: 2017-07-10 To: 2017-07-17
Title: 2017-07 W3 From: 2017-07-17 To: 2017-07-24
Title: 2017-07 W4 From: 2017-07-24 To: 2017-07-31
Title: 2017-07 W5 From: 2017-07-31 To: 2017-08-07
Title: 2017-08 W1 From: 2017-08-07 To: 2017-08-14
Title: 2017-08 W2 From: 2017-08-14 To: 2017-08-21
Title: 2017-08 W3 From: 2017-08-21 To: 2017-08-28
Title: 2017-08 W4 From: 2017-08-28 To: 2017-09-04
Title: 2017-09 W1 From: 2017-09-04 To: 2017-09-11

支持的周期

  • 秒:从开始到结束的每一秒
  • 分钟:从开始到结束的每一分钟
  • 小时:从开始到结束的每一小时
  • 日:从开始到结束的每一天
  • 周:从开始到结束的每一周
  • 月:从开始到结束的每一月
  • 季度:从开始到结束的每一个季度
  • 年:从开始到结束的每一年
  • 无:与DateInterval相同