Fix broken time splitting for year ranges BC
This commit is contained in:
		| @@ -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)); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -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); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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); | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user