Teach time splitter to handle multi-year time spans in CE

This commit is contained in:
Joshua Ramon Enslin 2020-09-20 15:42:59 +02:00 committed by Stefan Rohde-Enslin
parent c298794a32
commit affe8e3741

View File

@ -162,18 +162,29 @@ final class NodaTimeSplitter {
*/
public static function timePartsToTimeName(array $moda):string {
$moda[0] = intval($moda[0]);
$moda[1] = intval($moda[1]);
if ($moda[0] > $moda[1]) {
$suffix = " v. Chr.";
}
else if ($moda[1] < 1000) {
$suffix = " n. Chr.";
}
else $suffix = "";
if ($moda[0] !== $moda[1]) {
return "{$moda[0]}-{$moda[1]}";
return "{$moda[0]}-{$moda[1]}{$suffix}";
}
else if (intval($moda[2]) !== 0 and intval($moda[3]) !== 0) {
return "{$moda[3]}.{$moda[2]}.{$moda[0]}";
return "{$moda[3]}.{$moda[2]}.{$moda[0]}{$suffix}";
}
else if ($moda[0] === $moda[1] && trim($moda[2], " 0") === "" && trim($moda[3], " 0") === "") {
return "{$moda[0]}";
return "{$moda[0]}{$suffix}";
}
else if ($moda[0] === $moda[1] && trim($moda[2], " 0") !== "" && trim($moda[3], " 0") === "") {
setlocale(LC_TIME, NodaTimeAutotranslater::LANGS_TO_LOCALES['de']);
return strftime(getMonthFormatByLang("de"), MD_STD::strtotime("{$moda[0]}-{$moda[2]}-01 01:01:01"));
return strftime(getMonthFormatByLang("de"), MD_STD::strtotime("{$moda[0]}-{$moda[2]}-01 01:01:01")) . $suffix;
}
return "";
@ -415,6 +426,22 @@ final class NodaTimeSplitter {
$month = substr($datum, 5, 2);
return [$start, $start, $month, "00"];
}
if (preg_match("/^[0-9][0-9][0-9][0-9]\-[0-9][0-9]$/", $datum)) { // Hungarian Y-m
$start = substr($datum, 0, 4);
$endDigits = substr($datum, 5, 2);
if (intval($endDigits) > 12) return [$start, substr($datum, 0, 2) . $endDigits, "00", "00"];
}
if (preg_match("/^01\.01\.[0-9][0-9][0-9][0-9]\-31\.12\.[0-9][0-9][0-9][0-9]$/", $datum)) { // Hungarian Y-m
$start = substr($datum, 6, 4);
$end = substr($datum, -4);
return [$start, $end, "00", "00"];
}
if (preg_match("/[0-9][0-9][0-9]\-[0-9][0-9][0-9]$/", $datum)) { // Hungarian Y-m
$start = substr($datum, 0, 3);
$end = substr($datum, -3);
if ($end > $start) return ["0" . $start, "0" . $end, "00", "00"];
}
if (preg_match("/^[0-9][0-9][0-9][0-9]$/", $datum)) {
$start = substr($datum, 0, 4);