public function __toString()

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, ' ');
  }