Download the PHP package sjaakp/yii2-fuzzydate without Composer
On this page you can find all versions of the php package sjaakp/yii2-fuzzydate. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package yii2-fuzzydate
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
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, a fuzzy date is represented by a three member array, where the unknown values are set to null
. Like so:
Or, you can format a fuzzy date using code like this: