Rolf B: Temporal.PlainTime.from("123010")

Hallo,

Temporal wollte ja unsere Probleme mit Date lösen. Bis sie von der in PHP grassierenden Zeitformatseuche infiziert wurden 🤮...

Grundsätzlich kennen die from-Methoden von Temporal die Möglichkeit, einen DateTime-String laut ISO 8601 zu empfangen. Also sowas wie 2026-02-25T17:07:10. PlainTime kann das auch, ignoriert aber das Datum.

Spaßig ist, dass in diesem String das Datum fehlen darf und dann das T ebenfalls optional ist. "12:30" ist eine gültige Uhrzeitangabe.

Wegen (invent your reason here) sind die "-" im Datum und die ":" in der Uhrzeit ebenfalls optional.

Nun darf geraten werden. Was gibt das zweite console.log() aus?

console.log(Temporal.PlainTime.from("133010").toString());
// 13:30:10

console.log(Temporal.PlainTime.from("123010").toString());
// 🤔

Und ich dachte, die Zeiten von 010+004==12 sind vorbei 😢

Wer den Grund sucht, findet ihn mutmaßlich hier… Gegen wen stellt man da ein Issue ein, frag ich mich?

Rolf

--
sumpsi - posui - obstruxi
  1. Liebe(r) Rolf,

    console.log(Temporal.PlainTime.from("133010").toString());
    // 13:30:10
    

    also mein Firefox sagt mir auf der Konsole etwas ganz anderes:

    Uncaught RangeError: can't parse time: time is ambiguous with a year-month
    

    Chromium formuliert es ähnlich:

    Uncaught RangeError: Temporal error: Time is ambiguous with YearMonth
    
    console.log(Temporal.PlainTime.from("123010").toString());
    // 🤔
    

    Im Firefox kommt hier die identische Fehlermeldung wie bei "133010".

    Chromium formuliert dieses Mal leicht anders:

    Uncaught RangeError: Temporal error: Time is ambiguous with MonthDay
    

    Liebe Grüße

    Felix Riesterer

    1. Hallo Felix,

      das ist spannend. Ich hatte zwar zuerst 1545 da stehen, meine aber, ich hätte 133010 auch getestet und ein PlainTime Objekt bekommen, keine Ambiguität mit YearMonth. Das war allerdings Chromium in der Geschmacksrichtung „Edge 144“. Welche Sorte hast Du verkostet?

      Update: Ich hatte "1330" getestet, das funktioniert. "133010" hingegen gibt YearMonth ambiguity. Und "123010" gibt widersinnigerweise MonthDay ambiguity (wobei YearMonth auch möglich wäre).

      Rolf

      --
      sumpsi - posui - obstruxi
      1. Lieber Rolf,

        Welche Sorte hast Du verkostet?

        Version 145.0.7632.116 (Offizieller Build) for Linux Mint (64-Bit)

        Liebe Grüße

        Felix Riesterer