mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-29 18:20:01 +00:00
Some basic date tests
This commit is contained in:
@@ -47,12 +47,23 @@ class Navigation
|
||||
$add = ($skip + 1);
|
||||
|
||||
$functionMap = [
|
||||
'1D' => 'addDays', 'daily' => 'addDays',
|
||||
'1W' => 'addWeeks', 'weekly' => 'addWeeks', 'week' => 'addWeeks',
|
||||
'1M' => 'addMonths', 'month' => 'addMonths', 'monthly' => 'addMonths', '3M' => 'addMonths',
|
||||
'quarter' => 'addMonths', 'quarterly' => 'addMonths', '6M' => 'addMonths', 'half-year' => 'addMonths',
|
||||
'year' => 'addYears', 'yearly' => 'addYears', '1Y' => 'addYears',
|
||||
'custom' => 'addMonths', // custom? just add one month.
|
||||
'1D' => 'addDays',
|
||||
'daily' => 'addDays',
|
||||
'1W' => 'addWeeks',
|
||||
'weekly' => 'addWeeks',
|
||||
'week' => 'addWeeks',
|
||||
'1M' => 'addMonths',
|
||||
'month' => 'addMonths',
|
||||
'monthly' => 'addMonths',
|
||||
'3M' => 'addMonths',
|
||||
'quarter' => 'addMonths',
|
||||
'quarterly' => 'addMonths',
|
||||
'6M' => 'addMonths',
|
||||
'half-year' => 'addMonths',
|
||||
'year' => 'addYears',
|
||||
'yearly' => 'addYears',
|
||||
'1Y' => 'addYears',
|
||||
'custom' => 'addMonths', // custom? just add one month.
|
||||
];
|
||||
$modifierMap = [
|
||||
'quarter' => 3,
|
||||
@@ -71,11 +82,16 @@ class Navigation
|
||||
$function = $functionMap[$repeatFreq];
|
||||
$date->$function($add);
|
||||
|
||||
// if period is 1M and diff in month is 2 and new DOM = 1, sub a day:
|
||||
// if period is 1M and diff in month is 2 and new DOM > 1, sub a number of days:
|
||||
// result is:
|
||||
// '2019-01-29', '2019-02-28'
|
||||
// '2019-01-30', '2019-02-28'
|
||||
// '2019-01-31', '2019-02-28'
|
||||
|
||||
$months = ['1M', 'month', 'monthly'];
|
||||
$difference = $date->month - $theDate->month;
|
||||
if (2 === $difference && 1 === $date->day && \in_array($repeatFreq, $months, true)) {
|
||||
$date->subDay();
|
||||
if (2 === $difference && $date->day > 0 && \in_array($repeatFreq, $months, true)) {
|
||||
$date->subDays($date->day);
|
||||
}
|
||||
|
||||
return $date;
|
||||
@@ -162,11 +178,22 @@ class Navigation
|
||||
$currentEnd = clone $end;
|
||||
|
||||
$functionMap = [
|
||||
'1D' => 'endOfDay', 'daily' => 'endOfDay',
|
||||
'1W' => 'addWeek', 'week' => 'addWeek', 'weekly' => 'addWeek',
|
||||
'1M' => 'addMonth', 'month' => 'addMonth', 'monthly' => 'addMonth',
|
||||
'3M' => 'addMonths', 'quarter' => 'addMonths', 'quarterly' => 'addMonths', '6M' => 'addMonths', 'half-year' => 'addMonths',
|
||||
'year' => 'addYear', 'yearly' => 'addYear', '1Y' => 'addYear',
|
||||
'1D' => 'endOfDay',
|
||||
'daily' => 'endOfDay',
|
||||
'1W' => 'addWeek',
|
||||
'week' => 'addWeek',
|
||||
'weekly' => 'addWeek',
|
||||
'1M' => 'addMonth',
|
||||
'month' => 'addMonth',
|
||||
'monthly' => 'addMonth',
|
||||
'3M' => 'addMonths',
|
||||
'quarter' => 'addMonths',
|
||||
'quarterly' => 'addMonths',
|
||||
'6M' => 'addMonths',
|
||||
'half-year' => 'addMonths',
|
||||
'year' => 'addYear',
|
||||
'yearly' => 'addYear',
|
||||
'1Y' => 'addYear',
|
||||
];
|
||||
$modifierMap = [
|
||||
'quarter' => 3,
|
||||
@@ -200,14 +227,15 @@ class Navigation
|
||||
|
||||
if (isset($modifierMap[$repeatFreq])) {
|
||||
$currentEnd->$function($modifierMap[$repeatFreq]);
|
||||
|
||||
if (\in_array($repeatFreq, $subDay, true)) {
|
||||
$currentEnd->subDay();
|
||||
}
|
||||
$currentEnd->endOfDay();
|
||||
|
||||
return $currentEnd;
|
||||
}
|
||||
$currentEnd->$function();
|
||||
$currentEnd->endOfDay();
|
||||
if (\in_array($repeatFreq, $subDay, true)) {
|
||||
$currentEnd->subDay();
|
||||
}
|
||||
|
Reference in New Issue
Block a user