![]() |
Datums-Umwandlung
Mein Titel sagt jetzt nicht sehr viel aus,
Ich bin eigentlich recht neu in der Delphi Programmierung daher kenne ich so einiges noch nicht so. Habe lange Zeit in Python Programmiert, daher jetzt meine Frage: In Python habe ich ein Datum bsp: 220531 mit folgenden code nach 2022/05/31 umgewandelt.
Code:
Wie geht das eigentlich mit Delphi, ich habe es bisher so versucht. Doch da kommt von der Jahreszahl nur 31.05.0022 heraus statt 2022.
datetime.strptime(date_str, "%y%m%d").strftime('%Y/%m/%d')
Gehe davon aus der er das Jahr nicht hinzufantasiert wie es python macht xD.
Code:
Wie, bzw was muss ich machen das ich eine ähnliche Funktion in Delphi Bekomme wie ich es bei python genutzt habe!?myStr := '220531'; myDate := EncodeDate( StrToInt(Copy(MyStr, 1, 2)), StrToInt(Copy(MyStr, 3, 2)), StrToInt(Copy(MyStr, 5, 2)) ); ~.Caption:= FormatDateTime('dd.mm.yyyy', myDate); Über eure Hilfe/Tipps würde ich mich Freuen. |
AW: Datums-Umwandlung
Moin...:P
Zitat:
![]() Zitat:
Lösung: ![]() ![]() Zitat:
oder: Sicherstellen das der String den Formatangaben des Systems entspricht. ![]() Zitat:
Intern, Code/DB, sollte immer mit TDateTime = Double benutzt werden. Für die Ausgabe, XML Export, CSV Export oder für Textimporte kann/muß man das umwandeln. :zwinker: Willkommen...:dp: |
AW: Datums-Umwandlung
Liste der Anhänge anzeigen (Anzahl: 1)
![]() Es ist im Windows irgendwo eingestellt, welches Jahr als Grenze gilt. Aktuell liegt die Grenze noch bei 50 (ich denke mal in den nächsten 20 Jahren wird das auf 75, bzw. bald sogar auf 00 verschoben ... jedenfalls wäre es intelligent, wenn es so wird) Nachlesen kannst du es in ![]() oder in den Datumseinstellungen im Windows (oder global für alle Programme ändern) Anhang 55116 Und das mit % kann sowieso nicht funktionieren, denn wie formatiert es Delphi/Windows? ![]() ![]() Früher war es mal so, dass Delphi garkeine beliebigen FormatStrings als Quelle verwenden konnte, aber angeblich wurde das zuletzt nun endlich mal repariert. Niemand hat Extended zu verwenden ... das war niemals zur direkten Verwendung/Speicherung vorgesehn und spätestens wenn du irgendwas kompilierst, was nicht Win32 ist, bist du angearscht. Außerdem ![]() |
AW: Datums-Umwandlung
Ja, TDateTime ist intern ein Double also ein 64 Bit Floating Point Wert, bei dem der Ganzzahlteil
die Tage seit 30.12.1899 sind und der fraktionale Teil die Uhrzeit innerhalb des Tages darstellt. Extended ist ein 80 Bit Fließkommatyp, den es gibt weil Delphi die interne Register Repräsentation der Intel x87 FPU Register mittels diesem Typ verfügbar macht. Wer höhere Präzission braucht kann also diesen Datenfyp für seine Berechnungen benutzen. Allerdings hat Himisu recht: das geht nur unter Win32. Auf anderen Plattformen werden Fließkommazahlen evtl. ganz anders intern behandelt und bei Win64 gab's damals die Auswahl entweder ASM Routinen im Code benutzen zu können (nein, nicht Inline, aber zumindest als ganze Prozedur oder Methode) oder 80 Bit Extended unterstützt zu bekommen. Die Entscheidung fiel zugunsten ASM aus... Somit gibt es auf anderen Plattformen zwar einen Datentyp Extended, aber nur als Alias für Double... Grüße TurboMagic |
AW: Datums-Umwandlung
Danke erstmal xD
Zitat:
Aber danke dennoch da muss ich mich erstmal einlesen. Gegen das herkunftsformat kann ich nichts ausrichten das ist in einer datamatrix so hinterlegt. Da wurden keine Trennzeichen eingebettet daher ja auch meine Frage ^^ in python ist das ja einfach in Delphi scheint es etwas aufwendiger zu sein. |
AW: Datums-Umwandlung
Delphi-Quellcode:
var
myStr : String; myDate : String; dt : TDateTime; begin // Wenn's Datum immer so kommt und es für die nächsten knapp 78 Jahre ausreicht, geht es auch so: myStr := '220531'; myDate := Format('%s.%s.20%s',[Copy(myStr, 5, 2),Copy(myStr, 3, 2),Copy(myStr, 1, 2)]); Caption := myDate; // Wenn man es dann auch noch als Datum benötigt: dt := StrToDate(myDate); end; |
AW: Datums-Umwandlung
Zitat:
Delphi-Quellcode:
Bis bald...
var
p: PChar; begin date_str := '220531'; p := PChar(date_str); ShowMessage(Format('%.2s.%.2s.20%.2s', [(p + 4), (p + 2), p])); Thomas |
AW: Datums-Umwandlung
Hey danke euch :shock:,
an das direkte Formatieren des strings hab ich nicht gedacht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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-2025 by Thomas Breitkreuz