AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Datum anhand Format umwandeln
Thema durchsuchen
Ansicht
Themen-Optionen

Datum anhand Format umwandeln

Ein Thema von Hausmarke · begonnen am 8. Mai 2013 · letzter Beitrag vom 14. Mai 2013
Antwort Antwort
Seite 1 von 2  1 2      
Hausmarke

Registriert seit: 5. Apr 2013
Ort: Sachsen
47 Beiträge
 
Delphi 2007 Professional
 
#1

Datum anhand Format umwandeln

  Alt 8. Mai 2013, 15:49
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 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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datum anhand Format umwandeln

  Alt 8. Mai 2013, 16:00
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hausmarke

Registriert seit: 5. Apr 2013
Ort: Sachsen
47 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Datum anhand Format umwandeln

  Alt 8. Mai 2013, 16:14
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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Datum anhand Format umwandeln

  Alt 8. Mai 2013, 16:14
Wenn das Format immer gleich bleiben würde, könnte man das mit einer einfachen stringmanipulation handhaben.
Dem ist aber nicht so wäre ja auch langweilig.
Ich denke umgekehrt wird ein Schuh daraus. Wenn das Datumsformat in der Datei mehrfach wechselt würde ich entsprechend der Formatangabe Jahr, Monat, Tag auslesen und dann einen gültigen Datumsstring zusammensetzen.
Dieser wird dan mit strtodate, trystrtodate oder was auch immer Du nutzen willst zu einem Datum gemacht.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: Datum anhand Format umwandeln

  Alt 8. Mai 2013, 16:31
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Datum anhand Format umwandeln

  Alt 8. Mai 2013, 16:48
... und das ShortDateFormat entsprechend setzen.
Warum? wenn ich den string schon in den Fingern habe, dann kann ich auch gleich das "richtige" Format basteln.
Jedes Mal das Datumsformat anpassen scheint mir zu aufwendig?

Gruß
k-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

AW: Datum anhand Format umwandeln

  Alt 8. Mai 2013, 17:23
Ob ich String-Manipulationen am Eingangsstring oder am FormatString vornehme, sollte sich im Aufwand nicht unterscheiden, oder?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Datum anhand Format umwandeln

  Alt 8. Mai 2013, 19:58
Nur mal so als Hinweis: Einfach mal den Source zu Delphi-Referenz durchsuchenStrToDate anschauen und man spart sich jede Überlegung mit den FormatSettings irgendwelche exotischen Datums Formatierungen zu übergeben
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Hausmarke

Registriert seit: 5. Apr 2013
Ort: Sachsen
47 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Datum anhand Format umwandeln

  Alt 14. Mai 2013, 09:22
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Datum anhand Format umwandeln

  Alt 14. Mai 2013, 09:45
Zitat:
leider habe ich nichts vordefiniertes gefunden was mein Problem lösen konnte.
Zitat von Sir Rufo:
Nur mal so als Hinweis: Einfach mal den Source zu Delphi-Referenz durchsuchenStrToDate anschauen und man spart sich jede Überlegung mit den FormatSettings irgendwelche exotischen Datums Formatierungen zu übergeben
Es gibt eine überladene Version von StrToDate mit dem zusätzlichen Parameter FormatSettings, in welchem man das Format übergeben kann.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz