in src/datetime/Time.php [452:491]
public function __toString(int $max_decimals = 3): string {
invariant(
$max_decimals >= 0,
'Expected a non-negative number of decimals.',
);
$decimal_part = '';
if ($max_decimals > 0) {
$decimal_part = (string)Math\abs($this->nanoseconds)
|> Str\pad_left($$, 9, '0')
|> Str\slice($$, 0, $max_decimals)
|> Str\trim_right($$, '0');
}
if ($decimal_part !== '') {
$decimal_part = '.'.$decimal_part;
}
$sec_sign = $this->seconds < 0 || $this->nanoseconds < 0 ? '-' : '';
$sec = Math\abs($this->seconds);
$values = vec[
tuple((string)$this->hours, 'hr'),
tuple((string)$this->minutes, 'min'),
tuple($sec_sign.$sec.$decimal_part, 'sec'),
];
for (
$end = C\count($values);
$end > 0 && $values[$end - 1][0] === '0';
--$end
) {}
for (
$start = 0;
$start < $end && $values[$start][0] === '0';
++$start
) {}
$output = vec[];
for ($i = $start; $i < $end; ++$i) {
$output[] = $values[$i][0].$values[$i][1];
}
return C\is_empty($output) ? '0sec' : Str\join($output, ' ');
}