![]() |
Double und TDateTime 'delokalisiert' speichern
Hallo Leute!
Ich möchte in meinem (XML-)File Zeitstempel (TDateTime) und double-Werte speichern, und zwar ohne länderabhängige Formatierungen. Mit StrToDateTime und DateTimeToStr ist dies noch möglich, allerdings ohne Milisekunden, was mich stört. Bei FloatToStrF gibt es kein entsprechendes Pendant zum zurückholen und jedesmal DecimalSeparator zu überschreiben (in der GUI möchte ich latürnich lokalisierte Ausgaben machen) finde ich irgendwie unprofessionell. Geht das auch irgendwie 'generischer' und sauberer? Ciao |
Re: Double und TDateTime 'delokalisiert' speichern
ISO-Zeitformat ist 'ne Möglichkeit: YYYY-MM-DD hh:nn:ss
|
Re: Double und TDateTime 'delokalisiert' speichern
Zitat:
|
Re: Double und TDateTime 'delokalisiert' speichern
Hi !
Delphi-Quellcode:
Könnte das helfen :?:function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime; { DecodeDate decodes the integral (date) part of the given TDateTime value into its corresponding year, month, and day. If the given TDateTime value is less than or equal to zero, the year, month, and day return parameters are all set to zero. } procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word); { DateTimeToSystemTime converts a date and time from Delphi's TDateTime format into the Win32 API's TSystemTime format. } |
Re: Double und TDateTime 'delokalisiert' speichern
Kuck mal da:
![]() oder hier wäre die orginale, offizielle Quelle: ![]() demnach
Delphi-Quellcode:
function XMLDatetime(d:TDateTime):string;
begin result := FormatDateTime('yyyy"-"mm"-"dd"T"hh":"nn":"ss', d); end; |
Re: Double und TDateTime 'delokalisiert' speichern
OK, Und wie bekomm ich das wieder zurück in ein TDateTime? Das ist ja mein Problem: ich brauche so etwas wie 'sscanf' unter Delphi.
Ciao |
Re: Double und TDateTime 'delokalisiert' speichern
Zitat:
Delphi-Quellcode:
function XMLStrToDate(adatum:string):Tdatetime;
var year,month,day,h,m,s:word; begin // yyyy"-"mm"-"dd"T"hh":"nn":"ss year:=strtoint(copy(adatum,1,4)); month:=strtoint(copy(adatum,6,2)); day:=strtoint(copy(adatum,9,2)); result:=encodedate(year,month,day); h:=strtoint(copy(adatum,12,2)); m:=strtoint(copy(adatum,15,2)); s:=strtoint(copy(adatum,18,2)); Result:=Result+encodeTime(h,m,s,0); end; |
Re: Double und TDateTime 'delokalisiert' speichern
Hi!
Ja, genau so! Vielen Dank. 'copy' war mir gänzlich unbekannt. Ciao |
Re: Double und TDateTime 'delokalisiert' speichern
Jetzt hab' ich immer noch das Problem mit den double-Werten. Diese müssen auch 'delokalisiert' gespeichert UND wieder eingelesen werden. Wie komm ich denn an den Nachkommaanteil der Zahl? Der ganzzahlige Anteil ist mit Round und Ceil/Floor zu bekommen.
Ciao |
Re: Double und TDateTime 'delokalisiert' speichern
Such mal nach "frac"
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 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