![]() |
Datum anhand Format umwandeln
Hallo Liebe Gemeinde :)
ich habe das problem, das ich aus einer datei einen string auslese die ein Datum enthält, dazu ist auch jeweils das Format hinterlegt: beispiel: datum: 20130705 format: yyyymmdd Wenn das Format immer gleich bleiben würde, könnte man das mit einer einfachen stringmanipulation handhaben. Dem ist aber nicht so :lol: wäre ja auch langweilig. Deshalb übergebe ich das hinterlegte Format und möchte nun anhand dessen, das datum einlesen und in einem anderen Format wieder ausgeben. Wie könnte man dies umsetzen? Mein ansatz ist folgender:
Delphi-Quellcode:
var datum : TDatetime;
content : string; . . shortdateformat := yyyymmdd; Datum := strtodate(content); <- hier kommt jetzt der fehler, das 20130705 kein Datum ist |
AW: Datum anhand Format umwandeln
AFAIK brauchst Du zwingend einen DateSeparator in Deinem String. Etwas umständlich, aber das hier klappt:
Delphi-Quellcode:
var
Settings: TFormatSettings; d: TDate; s: string; begin s := '20130705'; Insert('/', s, 5); Insert('/', s, 8); Settings.ShortDateFormat := 'yyyy/mm/dd'; Settings.DateSeparator := '/'; d := StrToDate(s, Settings); ShowMessage(FormatDateTime('dd.mm.yyyy', d)); end; |
AW: Datum anhand Format umwandeln
danke für die schnelle antwort.
leider löst das mein problem nicht ganz. durch stringmanipulation einen separator einzufügen und dann umzuwandeln hatte ich schon durch gespielt. Allerdings hatte ich mich nicht spezifisch dazu geäußert, dass das Format des eingelesenen Datums variieren kann. beispiel: datum: 20130705 format: yyyymmdd und in einer anderen zeile/spalte steht dann Datum: 130225 format: yymmdd deshalb funktioniert die variante mit der Stringmanipulation hier nicht. Im grunde könnte man jetzt diese beiden varianten statisch programmieren. Allerdings muss ich davon ausgehen, das sich das Format in einer anderen zeile/spalte ändert. deshalb wäre meine idee: man liest das datum in dem vorgegebenen Format ein, und gibt es dann im gewünschten format wieder aus. ich schätze jetzt wirds noch umständlicher. |
AW: Datum anhand Format umwandeln
Zitat:
Dieser wird dan mit strtodate, trystrtodate oder was auch immer Du nutzen willst zu einem Datum gemacht. Gruß K-H |
AW: Datum anhand Format umwandeln
So hatte ich auch gedacht. Da das Format ja in dem Moment bekannt ist, muss man eben den String manipulieren und das ShortDateFormat entsprechend setzen. Etwas anderes fällt mir auch nicht ein.
|
AW: Datum anhand Format umwandeln
Zitat:
Jedes Mal das Datumsformat anpassen scheint mir zu aufwendig? Gruß k-H |
AW: Datum anhand Format umwandeln
Ob ich String-Manipulationen am Eingangsstring oder am FormatString vornehme, sollte sich im Aufwand nicht unterscheiden, oder?
|
AW: Datum anhand Format umwandeln
Nur mal so als Hinweis: Einfach mal den Source zu
![]() |
AW: Datum anhand Format umwandeln
leider habe ich nichts vordefiniertes gefunden was mein Problem lösen konnte.
Ich habe mir nun eine eigene kleine function gebastelt die mir das Ausgabeformat auseinander nimmt und das Datum dann dementsprechend zusammensetzt und umwandelt. besten dank an alle Helfer |
AW: Datum anhand Format umwandeln
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz