Folllast: Text aufteilen mit HTML-Tags

Hallo,

ich habe folgende Herausforderung: Ich versende aus einem Programm eine Email und kann dort (logischerweise) auch HTML-Tags benutzen, damit diese Email schön aussieht. Dort werde div. Datensätze aus einer Datenbank ausgelesen und in der Email gesammelt. Die Herausforderung: das Datum wird in der Tabelle so gespeichert: "202105072145". Die Kollegen möchten aber (logischerweise) das Datum etwas schöner lesbar bekommen. Gibt es einen HTML-Tag, der nur einen kleinen Teil eines Textes anzeigt? Sowas wie "Substr(datum,1,4)" um nur die ersten 4 Zeichen des Datums anzuzeigen? dann könnte man sich ja die schöne Datumsansicht zusammenbauen. Aber ich befürchte, das HTML sowas nicht kann, weil das ja auch nicht die aufgabe davon ist.

Vielen DAnk.

  1. Hallo Folllast,

    das Datum wird in der Tabelle so gespeichert: "202105072145".

    Es ist also kein Datum. Es ist ein Timestamp, und das auch noch in einem Nonstandard-Format (Standard wäre bspw. ISO mit YYYY-MM-DD-HH:MM:SS).

    Demnach ist die Antwort ein Jein.

    Einerseits hat HTML das <input type="date"> Element, um ein Datumsfeld für die Eingabe zu haben. Aber auch dem musst Du das Datum ohne Zeit und im Format JJJJ-MM-TT geben, und es sticht dann als Eingabefeld heraus (was man mit Styles etwas dämpfen kann).

    Wenn die Ausgabe ein Browser wäre, könnte man sich noch Gedanken über Locales und Kulturkreise machen; aber ich glaube, die Mailclients sind da noch dümmer als der Internet Explorer 😉 (lasse mich aber gern belehren).

    Ich denke, das musst Du beim Mailversand vorformatieren.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. @@Rolf B

      das Datum wird in der Tabelle so gespeichert: "202105072145".

      Das steht hoffentlich für den 7. Mai, nicht für den 5. Juli.

      (Standard wäre bspw. ISO mit YYYY-MM-DD-HH:MM:SS).

      Nicht ganz. T zwischen DD und HH. Außerdem sollte bei Uhrzeiten immer die Zeitzone mit angegeben sein.

      Einerseits hat HTML das <input type="date"> Element, um ein Datumsfeld für die Eingabe zu haben.

      Was hat das hiermit zu tun?

      Andererseits hat HTML das <time>-Element, wobei der Wert im ISO-8601-Format sein muss. Genauer gesagt: einer Teilmenge davon. Aber statt T darf auch ein Leerzeichen zwischen Datum und Uhrzeit stehen, IIRC.

      <time>2021-05-07 21:45</time>
      

      oder

      <time datetime="2021-05-07 21:45">7. Mai 2021, 21:45 Uhr</time>
      

      😷 LLAP

      --
      “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
      1. Hallo Gunnar,

        Was hat das hiermit zu tun?

        Ein input type="date" formatiert den date-Value entsprechend dem Locale des Users. Damit könnte man eine für den User passende Formatierung erhalten. Aber keine Ahnung wie das in einer Mail aussieht oder taugt. Ich hab's ja auch eigentlich nicht empfohlen.

        Das <time> Element... uh oh, das kannte ich gar nicht 😏

        Rolf

        --
        sumpsi - posui - obstruxi
  2. Hi,

    ich habe folgende Herausforderung: Ich versende aus einem Programm eine Email und kann dort (logischerweise) auch HTML-Tags benutzen

    das ist alles andere als logisch, weil eine e-Mail von der Grundidee her erstmal nur Text ist, und bei vielen Empfängern auch nur so angezeigt wird.

    Dort werde div. Datensätze aus einer Datenbank ausgelesen und in der Email gesammelt. Die Herausforderung: das Datum wird in der Tabelle so gespeichert: "202105072145". Die Kollegen möchten aber (logischerweise) das Datum etwas schöner lesbar bekommen. Gibt es einen HTML-Tag, der nur einen kleinen Teil eines Textes anzeigt? Sowas wie "Substr(datum,1,4)" um nur die ersten 4 Zeichen des Datums anzuzeigen?

    Nein, sowas bietet HTML tatsächlich nicht. Wie Rolf schon schrieb, wirst du da in der vorgelagerten Verarbeitungsstufe eingreifen müssen.

    Live long and pros healthy,
     Martin

    --
    Fische, die bellen, beißen nicht.
  3. @@Folllast

    Die Herausforderung: das Datum wird in der Tabelle so gespeichert: "202105072145".

    Als String? Oder ist das das Datumsformat des verwenderen Datenbank-Systems?

    Nach dem Auslesen aus der Datenbank (eine solche meinst du doch mit „Tabelle“, oder?) kannst du den String ja umwandeln, z.B. mit regularem Ausdruck (\d{4})(\d{2})(\d{2})(\d{2})(\d{2}) (4 Ziffern fürs Jahr, dann jeweils 2 Ziffern für Monat, Tag, Stunde, Minute). Die Matches hast du dann in $1 bis $5, daraus kannst dann sowas bauen:

    <time datetime="$1-$2-$3 $4:$5">$3.$2.$1 $4:$5</time> (Pseudocode).

    😷 LLAP

    --
    “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon