Felix, der Glückliche: Zeitangaben formatieren

Hallo,

Wie kann ich eine Zeitangabe in einen länderüblichen String konvertieren?

Also z.B.

//Eingabe:
let zeit = "13:30:00"
// Expected Output (us): "1:30 pm"
// Expected Output (de): "13:30"

Hab mit localeTimeString herumhantiert aber geht das auch ohne Date-Objekt?

(Ich will z.B. auch nicht, dass Zeitzonen umgerechnet werden, es handelt sich um fixe Öffnungszeiten)

Danke! Felix.

  1. ...vielleicht zur Verdeutlichung:

    je nachdem, wo auf die Seite zugegriffen wird, soll die länderübliche Darstellungsvariante dargestellt werden.

    Danke!

    1. Hallo,

      ...vielleicht zur Verdeutlichung:

      je nachdem, wo auf die Seite zugegriffen wird, soll die länderübliche Darstellungsvariante dargestellt werden.

      das wird so nicht möglich sein. Dein Ansatz sieht offenbar Javascript vor (also clientseitig), und damit hast du allenfalls die Möglichkeit, dich an den regionalen Einstellungen ("locale") des verwendeten Rechners zu orientieren.
      Das kann sich erheblich von der tatsächlichen Region unterscheiden - z.B. bei einem Deutschen, der mit seinem eigenen Notebook auf Dienstreise in den USA unterwegs ist.

      Live long and pros healthy,
       Martin

      --
      Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
      1. Hallo Der Martin,

        je nachdem, wo auf die Seite zugegriffen wird, soll die länderübliche Darstellungsvariante dargestellt werden.

        das wird so nicht möglich sein. Dein Ansatz sieht offenbar Javascript vor (also clientseitig), und damit hast du allenfalls die Möglichkeit, dich an den regionalen Einstellungen ("locale") des verwendeten Rechners zu orientieren.
        Das kann sich erheblich von der tatsächlichen Region unterscheiden - z.B. bei einem Deutschen, der mit seinem eigenen Notebook auf Dienstreise in den USA unterwegs ist.

        Ich glaube, das ist genau das, was Felix, der Glückliche, möchte.

        je nachdem, wovon wem auf die Seite zugegriffen wird, soll die länderübliche seine übliche Darstellungsvariante dargestellt werden.

        Bis demnächst
        Matthias

        --
        Du kannst das Projekt SELFHTML unterstützen,
        indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
        1. Korrekt. Genau das will Felix 🙃

          1. Hallo,

            du kannst bei toLocaleString auch eine Zeitzone angeben.

            Gruß
            Jürgen

          2. Erster Treffer:

            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString

            Das sagt aber (scheinbar), Du musst die Einstellung angeben und zwar in der Form 'de-DE'.

            Wo diese herkommen steht hier:

            https://stackoverflow.com/questions/673905/best-way-to-determine-users-locale-within-browser

            Womöglich musst Du also etwas wie 'de' durch 'de-DE' ersetzen:

            if ( -1 == str.indexOf('-') {
                str = str + '-' + str.toUpperCase();
            }
            
            1. Mit anderen Worten: es gibt also keine [native] Möglichkeit, eine Zeitangabe wie "15:00:00" je nach Aufenthaltsort unterschiedlich darstellen zu lassen.

              1. Servus!

                Mit anderen Worten: es gibt also keine [native] Möglichkeit, eine Zeitangabe wie "15:00:00" je nach Aufenthaltsort unterschiedlich darstellen zu lassen.

                Genau!

                Den Aufenthaltsort könntest du mit Geolocation ermitteln, wenn der Nutzer dies zulässt.

                Dann hast du aber das Problem, dass jemand in den USA sein deutsches Tablet mit den entsprechenden Spracheinstellungen in System und Browser benutzt.

                Andererseits könnte auch ein deutscher Nutzer in einem peruanischen Internetcafé in Iquitos deine deutsche Seite mit spanischen / lateinamerikanischen Einstellungen aufrufen.

                Herzliche Grüße

                Matthias Scharwies

                --
                25 Jahre SELFHTML → neuer Termin!SELF-Treffen 09.-11. Oktober 2020 in Mannheim
                1. Hallo Matthias Scharwies,

                  Mit anderen Worten: es gibt also keine [native] Möglichkeit, eine Zeitangabe wie "15:00:00" je nach Aufenthaltsort unterschiedlich darstellen zu lassen.

                  Genau!

                  Dass es nicht um den Aufenthaltsort, sondern um die Einstellung des Browsers geht, hatten wir schon geklärt.

                  Date.prototype.toLocaleDateString() könnte in Verbindung mit NavigatorLanguage.language zielführend sein (ungetestet).

                  Bis demnächst
                  Matthias

                  --
                  Du kannst das Projekt SELFHTML unterstützen,
                  indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
                2. Den Aufenthaltsort könntest du mit Geolocation ermitteln, wenn der Nutzer dies zulässt.

                  Leute Leute,

                  es geht nur um die Angaben von Öffnungszeiten, ihr seid da ein wenig übermotiviert 😂

                  ...aber schon komisch, dass ich ein nicht relevantes Datum (dd/mm/yyy) angeben muss, damit ich die Zeit formatieren kann, quasi

                  new Date('August 19, 1975 /* braucht kein Mensch */   23:15:30').toLocaleTimeString();
                  
                  

                  Danke für eure Hilfe!

                  1. ...aber schon komisch, dass ich ein nicht relevantes Datum (dd/mm/yyy) angeben muss, damit ich die Zeit formatieren kann,

                    Nö. Musst Du nicht. Du kannst Dir alternativ eine lange Liste mit Sprachcodes holen, dazu das jeweilige Ausgabeformat erst heraussuchen und beides sodann in geeigneter Form notieren und in Deiner Anwendung den String entsprechend zusammenbauen... Stellt sich die Frage, wie Dir (und den Benutzern der Webseite, die das ganze Zeug herunterladen müssen... ) diese Alternative wohl gefällt.