PHPackages                             wwtg99/date\_period - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. wwtg99/date\_period

ActiveLibrary

wwtg99/date\_period
===================

Generate date period.

0.1.3(8y ago)168PHPPHP &gt;=5.6.4

Since Sep 19Pushed 8y ago1 watchersCompare

[ Source](https://github.com/wwtg99/date_period)[ Packagist](https://packagist.org/packages/wwtg99/date_period)[ RSS](/packages/wwtg99-date-period/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (3)Versions (5)Used By (0)

Date Period
===========

[](#date-period)

Generate a series of date period, usually for statistics. 基于日、周、月、年等的时间段切分。

Installation
============

[](#installation)

```
composer require wwtg99/date_period

```

or add

```
"wwtg99/date_period": "*"

```

to composer.json

Test
====

[](#test)

Unit test file in tests. Tested in PHP 7.1.

Usage
=====

[](#usage)

Methods
-------

[](#methods)

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

### Params

[](#params)

- $datePeriod: period to separate, day, week, month, year ...
- $start: start time string
- $end: end time string
- $dateFormat: date format(default) or datetime format

Examples
--------

[](#examples)

### Generate day array between start day(included) and end day(excluded)

[](#generate-day-array-between-start-dayincluded-and-end-dayexcluded)

```
$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";
}
```

Output:

```
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

```

### Generate month array between start day(included) and end day(excluded)

[](#generate-month-array-between-start-dayincluded-and-end-dayexcluded)

```
$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";
}
```

Output:

```
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

```

### Use generator instead of array (usually for very long period)

[](#use-generator-instead-of-array-usually-for-very-long-period)

Generator support 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";
}
```

Output:

```
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

```

Supported period
----------------

[](#supported-period)

- Second: every second from start to end
- Minute: every minute from start to end
- Hour: every hour from start to end
- Day: every day from start to end
- Week: every week from start to end
- Month: every month from start to end
- Season: every season from start to end
- Year: every year from start to end
- None: same as DateInterval

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

4

Last Release

3156d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b34e1979bed52d6644fa09df287ed7ced3fd21989c7ec02e722ae0c192cd89d4?d=identicon)[wwtg99](/maintainers/wwtg99)

---

Top Contributors

[![wwtg99](https://avatars.githubusercontent.com/u/3531639?v=4)](https://github.com/wwtg99 "wwtg99 (1 commits)")

---

Tags

datetimeperiod

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/wwtg99-date-period/health.svg)

```
[![Health](https://phpackages.com/badges/wwtg99-date-period/health.svg)](https://phpackages.com/packages/wwtg99-date-period)
```

###  Alternatives

[tymon/jwt-auth

JSON Web Token Authentication for Laravel and Lumen

11.5k49.1M350](/packages/tymon-jwt-auth)[bagisto/bagisto

Bagisto Laravel E-Commerce

26.2k161.6k7](/packages/bagisto-bagisto)[spatie/laravel-sitemap

Create and generate sitemaps with ease

2.6k14.6M107](/packages/spatie-laravel-sitemap)[statamic/cms

The Statamic CMS Core Package

4.8k3.2M720](/packages/statamic-cms)[team-reflex/discord-php

An unofficial API to interact with the voice and text service Discord.

1.1k379.4k24](/packages/team-reflex-discord-php)[temporal/sdk

Temporal SDK

4002.2M18](/packages/temporal-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
