![]() |
datumsformat
hallo zusammen,
kann mir jemand sagen wie ich zu so einem Datumsformat komme ?
Delphi-Quellcode:
ich danke euch2015-02-01T00:00:00Z |
AW: datumsformat
Das ist das ISO Datumsformat
|
AW: datumsformat
Von wo aus?
Gruß K-H |
AW: datumsformat
Du bist hier in "Programmieren allgemein". Um welche Programmiersprache dreht es sich denn erstmal?
|
AW: datumsformat
Wenn es um Delphi geht: System.DateUtils hat eine Funktion
Delphi-Quellcode:
.
DateToISO8601
|
AW: datumsformat
Wenn es nur um die Formatierung geht:
Delphi-Quellcode:
Ansonsten siehe Tipps oben.
ShowMessage(FormatDateTime('yyyy-MM-dd"T"hh:nn:ss"Z"', Date));
|
AW: datumsformat
sorry, geht bei mir wie immer um Lazarus.
DateToISO8601 gibts dort nicht :-( |
AW: datumsformat
|
AW: datumsformat
Dann bleibt Dir vermutlich kaum was anderes über, als die Darstellung in ISO8601 und das Parsen von dort selber zu übernehmen.
Aber aufpassen, wenn Du das Codesample von Popov übernehmen willst: Das Z hinten gibt an, das die Zeit in UTC ist. Das heisst wenn Du eine lokale Zeit hast (z.B. bei uns Mitteleuropäische Sommerzeit), dann musst Du jetzt z.B. 2015-06-30T15:56+02:00 angeben oder aber vorher in UTC umrechnen: 2015-06-30T13:56Z. Ich empfehle vor der Implementierung das hier zu lesen: ![]() Bzw. wenn Du eine Bibliothek findest die das macht, die dagegen mal kurz abzuklopfen. |
AW: datumsformat
alsoo ich hab jetzt das Beispiel von Popov ausprobiert.
Das funktioniert bis zum 9. des Monats:
Delphi-Quellcode:
am 10. des Monats bekomme ich als Ergebnis :
2015-06-09T00:00:00Z
Delphi-Quellcode:
am 11ten
2015-06-01T00:00:00Z0
Delphi-Quellcode:
was läuft da falsch??
2015-06-01T00:00:00Z1
|
AW: datumsformat
@Markus, ich danke dir, aber
XSBuiltIns hab ich bei Lazarus leider auch nicht :-( |
AW: datumsformat
Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var lDateTime: TDateTime; begin lDateTime := StrToDate('10.06.2015','.'); ShowMessage(FormatDateTime('yyyy-mm-dd"T"hh:nn:ss"Z"', lDateTime)); end; Ausgabe: 2015-06-10T00:00:00Z Zitat:
Wo kommen die denn hier bzw. wie und wo werden diese erzeugt? |
AW: datumsformat
mit
Delphi-Quellcode:
setze ich das Startdatum
myDate := StrToDate('01/06/15'); // Startdatum
in einer Schleife zähle ich die Daten hoch tag: string;
Delphi-Quellcode:
EDIT: muss woanders liegen :-(
for i:= 1 to 30 do
begin Tag:= FormatDateTime('yyyy-MM-dd"T"hh:nn:ss"Z"', myDate); myDate := incDay(mydate) ; end; |
AW: datumsformat
Zitat:
|
AW: datumsformat
habs gefunden
der Übeltäter ist
Delphi-Quellcode:
die Platzhalter #tag1 usw. gehen bis #tag31
FileReplaceString(ziel,#tag1,Tag);
damit werden bereits bei #tag10 der string #tag1 von #tag10 ersetzt, was bleibt ist die 0 hinter dem Z :-( wie krieg ich das den anders hin? |
AW: datumsformat
Wie sieht FileReplaceString aus?
|
AW: datumsformat
ach ja die procedure ;-)
Delphi-Quellcode:
edit: ich könnte die Ziffern der Platzhalter vor den String schreiben :-(
procedure FileReplaceString(const FileName, searchstring, replacestring: string);
var fs: TFileStream; S: string; begin fs := TFileStream.Create(FileName, fmOpenread or fmShareDenyNone); try SetLength(S, fs.Size); fs.ReadBuffer(S[1], fs.Size); finally fs.Free; end; S := StringReplace(S, SearchString, replaceString, [rfReplaceAll, rfIgnoreCase]); fs := TFileStream.Create(FileName, fmCreate); try fs.WriteBuffer(S[1], Length(S)); finally fs.Free; end; end; der Lesbarkeit halber wärs mir aber lieber die Platzhalter könnten so bleiben ;-) |
AW: datumsformat
FileReplaceString macht seinen Job richtig, das Problem ist der Platzhalter. Woher soll FileReplaceString nun wissen, dass #tag1 mal für den Tag 1 steht und mal ein Teil von Tag 10 ist.
Hier muss entweder der Platzhalter verändert werden oder der String muss geparst werden. |
AW: datumsformat
Wie rufst du FileReplaceString auf? In einer Schleife von 1 bis 31? Dann vielleicht besser rückwärts.
|
AW: datumsformat
Zitat:
(Da sich die übliche Leseweise an der ersten Ziffer von rechts orientiert muß man halt bei der Leserichtung von links nach rechts ein eintsprechendes Füllzeichen dazu packen) Gruß K-H |
AW: datumsformat
Der Vorschlag von Uwe sollte aber auch klappen.
|
AW: datumsformat
Kannst Du die Tags nicht ändern, also z.B. '#tag1#'? Dann ist das eindeutig,
Die Lösung von Uwe hat nämlich den Nachteil, das sie die konzeptionelle Schwäche der Tag-Namen kaschiert, anstatt das Problem von Grund auf zu lösen. In 3 Jahren hast Du vergessen, wieso die Schleife rückwärts läuft und denkst Dir vielleicht; "Blödsinn, ich lasse sie vorwärts laufen, sieht besser aus". => Peng. |
AW: datumsformat
>> Wie wäre es denn mit 01,02..09,10,11..99 ?
das ists, so einfach, oder? Warum bin ich da nicht selbst drauf gekommen ;-) ich danke euch |
AW: datumsformat
Bis man mehr als 99 braucht
|
AW: datumsformat
Laut gut informierter Quelle hat man in den nächsten Dekaden nicht vor mehr als 31 Tage einzuführen. Auch nicht mehr als 12 Monate. Womit die Sorge zum Teil unbegründet ist. Und sollte das Programm von khh über das Jahr (20)99 hinweg genutzt werden, dann werde ich kräftig beeindruckt sein.
|
AW: datumsformat
Zitat:
Gruß K-H |
AW: datumsformat
falls das Programm im Jahr 2100 noch läuft ist es längst in mein Vermächtnis übergegangen.
Und im aktuellen Fall geht das Datum auch nicht in die Vergangenheit. Also alles gut ;-) ich danke euch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 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