Fix broken time splitting for year ranges BC

This commit is contained in:
Joshua Ramon Enslin 2024-05-04 01:17:33 +02:00
parent eb14615917
commit 7d303e219f
Signed by: jrenslin
GPG Key ID: 46016F84501B70AE
3 changed files with 23 additions and 1 deletions

View File

@ -330,6 +330,7 @@ final class NodaSplitTime {
$this->end_date = '9999-12-31'; $this->end_date = '9999-12-31';
} }
if (!isset($this->start_date) && false !== $start_date) { if (!isset($this->start_date) && false !== $start_date) {
$this->start_date = date("Y-m-d", MD_STD::strtotime($start_date)); $this->start_date = date("Y-m-d", MD_STD::strtotime($start_date));
} }

View File

@ -336,13 +336,17 @@ final class NodaTimeSplitter {
$start = \strval(-1 * \intval($output->end_year)); $start = \strval(-1 * \intval($output->end_year));
$end = \strval(-1 * \intval($output->start_year)); $end = \strval(-1 * \intval($output->start_year));
$start_date = $output->end_date;
$end_date = $output->start_date;
if (\intval($start) > \intval($end)) { if (\intval($start) > \intval($end)) {
$startToSet = $end; $startToSet = $end;
$end = $start; $end = $start;
$start = $startToSet; $start = $startToSet;
$start_date = $output->start_date;
$end_date = $output->end_date;
} }
return new NodaSplitTime($start, $end, $output->counting_time_month, $output->counting_time_day, return new NodaSplitTime($start, $end, $output->counting_time_month, $output->counting_time_day,
NodaCountingTimeIndicator::bce, $output->before_after_indicator, '-' . $output->end_date, '-' . $output->start_date); NodaCountingTimeIndicator::bce, $output->before_after_indicator, '-' . $start_date, '-' . $end_date);
} }
} }

View File

@ -928,6 +928,8 @@ final class NodaTimeSplitterTest extends TestCase {
'end_name' => "Februar 2004", 'end_name' => "Februar 2004",
"start_year" => '2004', "start_year" => '2004',
"end_year" => '2004', "end_year" => '2004',
'start_date' => '2004-01-01',
'end_date' => '2004-02-31',
"counting_time_year" => "2004", "counting_time_year" => "2004",
"counting_time_month" => "02", "counting_time_month" => "02",
"counting_time_day" => "01", "counting_time_day" => "01",
@ -942,6 +944,8 @@ final class NodaTimeSplitterTest extends TestCase {
'end_name' => "Februar 2004", 'end_name' => "Februar 2004",
"start_year" => '2004', "start_year" => '2004',
"end_year" => '2004', "end_year" => '2004',
'start_date' => '2004-01-01',
'end_date' => '2004-02-31',
"counting_time_year" => "2004", "counting_time_year" => "2004",
"counting_time_month" => "02", "counting_time_month" => "02",
"counting_time_day" => "01", "counting_time_day" => "01",
@ -963,6 +967,8 @@ final class NodaTimeSplitterTest extends TestCase {
'end_name' => "15.04.2019", 'end_name' => "15.04.2019",
"start_year" => '2019', "start_year" => '2019',
"end_year" => '2019', "end_year" => '2019',
'start_date' => '2019-03-14',
'end_date' => '2019-04-15',
"counting_time_year" => "2019", "counting_time_year" => "2019",
"counting_time_month" => "03", "counting_time_month" => "03",
"counting_time_day" => "30", "counting_time_day" => "30",
@ -976,6 +982,8 @@ final class NodaTimeSplitterTest extends TestCase {
'end_name' => "15.03.2019", 'end_name' => "15.03.2019",
"start_year" => '2019', "start_year" => '2019',
"end_year" => '2019', "end_year" => '2019',
'start_date' => '2019-03-14',
'end_date' => '2019-03-15',
"counting_time_year" => "2019", "counting_time_year" => "2019",
"counting_time_month" => "03", "counting_time_month" => "03",
"counting_time_day" => "15", "counting_time_day" => "15",
@ -990,6 +998,8 @@ final class NodaTimeSplitterTest extends TestCase {
'end_name' => "1900", 'end_name' => "1900",
"start_year" => '1601', "start_year" => '1601',
"end_year" => '1900', "end_year" => '1900',
'start_date' => '1601-01-01',
'end_date' => '1900-12-31',
"counting_time_year" => "1751", "counting_time_year" => "1751",
"counting_time_month" => "01", "counting_time_month" => "01",
"counting_time_day" => "01", "counting_time_day" => "01",
@ -1004,12 +1014,19 @@ final class NodaTimeSplitterTest extends TestCase {
'end_name' => "1969", 'end_name' => "1969",
"start_year" => '1950', "start_year" => '1950',
"end_year" => '1969', "end_year" => '1969',
'start_date' => '1950-01-01',
'end_date' => '1969-12-31',
"counting_time_year" => "1960", "counting_time_year" => "1960",
"counting_time_month" => "01", "counting_time_month" => "01",
"counting_time_day" => "01", "counting_time_day" => "01",
"counting_time_bcce" => "+", "counting_time_bcce" => "+",
]); ]);
// Rewritten / 1950-60-as évek
$output = NodaTimeSplitter::attempt_splitting("1400-1100 v. Chr.");
self::assertEquals('-1400', $output->start_year);
self::assertEquals('-1400-01-01', $output->start_date);
} }
/** /**