PHPackages                             sjaakp/yii2-fuzzydate - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. sjaakp/yii2-fuzzydate

ActiveYii2-extension[Utility &amp; Helpers](/categories/utility)

sjaakp/yii2-fuzzydate
=====================

Use incomplete dates in Yii2.

1.2.3(4y ago)32041MITPHP

Since Aug 27Pushed 4y ago1 watchersCompare

[ Source](https://github.com/sjaakp/yii2-fuzzydate)[ Packagist](https://packagist.org/packages/sjaakp/yii2-fuzzydate)[ RSS](/packages/sjaakp-yii2-fuzzydate/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (2)Versions (10)Used By (0)

Yii2 Fuzzydate
==============

[](#yii2-fuzzydate)

[![Latest Stable Version](https://camo.githubusercontent.com/a5ffa3abe7418777fef86b462502fcd1ac39e4f45b5c7c589cf0ea42f311c618/68747470733a2f2f706f7365722e707567782e6f72672f736a61616b702f796969322d66757a7a79646174652f762f737461626c65)](https://packagist.org/packages/sjaakp/yii2-fuzzydate)[![Total Downloads](https://camo.githubusercontent.com/c5d675e3926f26e207188e4b5e4bebb972bacdf4180a7ae4ff4b008012d8a004/68747470733a2f2f706f7365722e707567782e6f72672f736a61616b702f796969322d66757a7a79646174652f646f776e6c6f616473)](https://packagist.org/packages/sjaakp/yii2-fuzzydate)[![License](https://camo.githubusercontent.com/9b5948408543e01a890174b924df21580f0f896d9d6022bd36d2215eeec2f46c/68747470733a2f2f706f7365722e707567782e6f72672f736a61616b702f796969322d66757a7a79646174652f6c6963656e7365)](https://packagist.org/packages/sjaakp/yii2-fuzzydate)

Often, when working with dates, data are incomplete. For instance, one might know that a person is born in 1980, or in April, 1980, but not on which day exactly.

I call these dates *fuzzy dates*. Here are a few classes to work with them in the Yii 2.x PHP framework.

Fuzzy date representation
-------------------------

[](#fuzzy-date-representation)

### In the database

[](#in-the-database)

In the database each fuzzy date is represented by **two** 'normal' dates. The field names of the two dates are derived from the attribute name of the fuzzy date, by appending `'1'` and `'2'` respectively.

So, if the attribute name of the fuzzy date is `'born'`, the fields representing it in the database would be `'born1'` and `'born2'`.

- If we know the date exactly, the value of both date fields is equal.
- If we know the date with a 'granularity' of one month, the value of the first field is the first day of the month, the value of the second field is the last day of the month.
- If we only know the year, the value of the first field is the first day of the year, the value of the second field is the last day of the year.

In other words, given a fuzzy date `'xyz'`, the range of possible 'real' dates is given by `'xyz1'` and `'xyz2'`.

For instance, the exact date of December 3, 2008 (the day Yii was launched, by the way) would be represented by (assuming MySQL format):

```
born1 = "2008-12-03"
born2 = "2008-12-03"

```

If the date was December, 2008, we would have:

```
born1 = "2008-12-01"
born2 = "2008-12-31"

```

And, lastly, if the date was 2008:

```
born1 = "2008-01-01"
born2 = "2008-12-31"

```

### In PHP

[](#in-php)

In PHP, a fuzzy date is represented by a three member array, where the unknown values are set to `null`. Like so:

```
