in src/datetime/Time.php [51:75]
public static function fromParts(
int $hours,
int $minutes = 0,
int $seconds = 0,
int $nanoseconds = 0,
): this {
// This is where the normalization happens.
$s = 3600 * $hours +
60 * $minutes +
$seconds +
(int)($nanoseconds / NS_IN_SEC);
$ns = $nanoseconds % NS_IN_SEC;
if ($s < 0 && $ns > 0) {
++$s;
$ns -= NS_IN_SEC;
} else if ($s > 0 && $ns < 0) {
--$s;
$ns += NS_IN_SEC;
}
$m = (int)($s / 60);
$s %= 60;
$h = (int)($m / 60);
$m %= 60;
return new self($h, $m, $s, $ns);
}