Handle dates outside of strtotime()'s range in date_to_int, int_to_date
Close #9
This commit is contained in:
parent
fb1372d193
commit
d4918dd893
@ -939,12 +939,11 @@ final class MD_STD {
|
||||
*/
|
||||
public static function date_to_int(string $date):int {
|
||||
|
||||
// Edge case: -0000-01-01
|
||||
if (substr($date, 0, 5) === '-0000') {
|
||||
return -1 * intval(str_replace("-", "", ltrim($date, "0-")));
|
||||
}
|
||||
$isNegative = substr($date, 0, 1) === '-';
|
||||
$parts = explode('-', $date);
|
||||
|
||||
return intval(date("Ymd", self::strtotime($date)));
|
||||
if ($isNegative === true) return -1 * intval(implode($parts));
|
||||
else return intval(implode($parts));
|
||||
|
||||
}
|
||||
|
||||
@ -973,7 +972,7 @@ final class MD_STD {
|
||||
|
||||
$day = substr($dateStr, -2, 2);
|
||||
$month = substr($dateStr, -4, 2);
|
||||
$year = substr($dateStr, -8, 4);
|
||||
$year = substr($dateStr, 0, -4);
|
||||
|
||||
return match($isNegative) {
|
||||
true => '-',
|
||||
|
@ -27,8 +27,8 @@ final class MD_STD_Test extends TestCase {
|
||||
["-0022-01-01", -220101],
|
||||
["-2022-01-01", -20220101],
|
||||
["-0001-01-01", -10101],
|
||||
["-0000-01-01", -101],
|
||||
["0000-01-01", 101],
|
||||
["100000-01-01", 1000000101],
|
||||
];
|
||||
|
||||
$output = [];
|
||||
|
Loading…
Reference in New Issue
Block a user