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. yii2-fuzzydate consists of a few classes to work with them.
In the database each fuzzy date is represented by two 'normal' dates. The field names of the two dates is derived from the attribute name of the fuzzy date, by appending
So, if the attribute name of the fuzzy date is
'born', the fields representing is in the database would be
In other words, given a fuzzy date
'xyz', the range of possible 'real' dates is given by
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, a fuzzy date is represented by a three member array, where the unknown values are set to
null. Like so:
// December 3, 2008 $born = [ 'y' => 2008, 'm' => 12, 'd' => 3 ]; // December, 2008 $born = [ 'y' => 2008, 'm' => 12, 'd' => null ]; // 2008 $born = [ 'y' => 2008, 'm' => null, 'd' => null ];