NetSpider - Mi 07.02.07 21:39
Titel: Datum im richtigen Format
Hi,
ich arbeite im Moment an einem Datenbank-Progamm. Es koennen auch Textdateien importiert werden - in dem sich auch ein Datum befindet. Dieses Datum liegt im Format 'mmm dd, yyyy' vor. Wie bekomme ich das jetzt in ein richtiges (von den Systemeinstellungen/Spracheinstellungen) abhaengiges Datumsformat?
Mittlerweile bin ich soweit, dass ich die einzelnen Bestandteile in Strings zerlegt hab.
Delphi-Quelltext
1:
| var Day, Month, Year: String; |
In Day steht dd
in Month steht mmm
und in Year kommt yyyy
Leider kann ich Month nicht direkt in einen Integer umwandeln (da 'Jan', 'Feb')...
Wie kann ich das jetzt elegant in einen Integer-Wert umwandeln?
Klar koennte ich eine Abfrage machen, allerdings bin ich mir nich sicher, ob alle Windows-Versionen 'mmm' gleich interpretieren/ausgeben...
z.B. Deutsch: mmm = Dez, Englisch: mmm = Dec
somit waere eine If-Abfrage mehr als unvorteilhaft, da ja alles noch mit einer Datenbank gekoppelt ist.
Gibt es eine Date-Funktion die 'Jan' nach '01', 'Feb' nach '02', usw. umwandelt (systemabhaengig)?
Vielen Dank - NetSpider
NetSpider - Do 08.02.07 05:40
Habs jetzt irgendwie auf eigene Faust gemacht...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function TImportRecord.DateToFormat(ImportDate: string): String; var Day, Month, Year, i: Integer; Buffer: String; begin Month := 1; Buffer := Unit1.MainForm.GetWord(ImportDate, 1, ' '); Day := StrToInt(Copy(Unit1.MainForm.GetWord(ImportDate, 2, ' '), 1, Length(Unit1.MainForm.GetWord(ImportDate, 2, ' '))-1)); Year := StrToInt(Unit1.MainForm.GetWord(ImportDate, 3, ' '));
for i := 1 to 12 do if UpperCase(ShortMonthNames[i]) = UpperCase(Buffer) then begin Month := i; Break; end; Result := DateToStr(EncodeDate(Year, Month, Day)); end; |
Das Eingabeformat ist: 'mmm dd, yyyy' -> raus kommt ein Systemabhaeniges Datum (hoffe ich mal!)
Und die Funktion GetWord ist folgende:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Function GetWord(Text: String; WordPos: Word; Seperator: String): String; var p : PChar; begin p := PChar(Text); repeat Dec(WordPos); while p^ <> Seperator do begin if WordPos = 0 then Result := Result + p^; Inc(p); end; if WordPos = 0 then Exit; Inc(p); until p^ = Seperator; end; |
Viele Gruesse, NetSpider
(Ja, manchmal muss man nur ne Nacht drueber schlafen!)