Text aufteilen mit HTML-Tags
Folllast
- html
- programmiertechnik
- sonstiges
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.
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
@@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
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
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
@@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