AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datumskonvertierung

Ein Thema von dose · begonnen am 26. Jun 2007 · letzter Beitrag vom 13. Jan 2017
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#11

AW: TimeStr im Format 'hh:mm:ss' in DateTime

  Alt 12. Jan 2017, 22:34
Warum ist im DateFormat ein Time-String drin?
Sei froh, dass Delphi beim Encodieren von Datums-/Zeitwerten so schrottig arbeitet, sonst hätte es dir diesen "kaputten" Datums-String um die Ohren geworfen.

Zitat:
If ( ((ord(InStr[i]) >= 48) and (ord(InStr[i]) <= 57 )) ) then
Wozu diese komische Obfuskation?
Delphi-Quellcode:
If (InStr[i] >= '0') and (InStr[i] <= '9') then

If CharInSet(InStr[i], ['0'..'9']) then //If InStr[i] in ['0'..'9'] then
Sinnlose Kommentare, ala // Zahlenbereiche auf Ziffern prüfen , könnte man sich dann auch sparen.


Zitat:
copy( FormatDateTime('dd.mm.yyyy hh:nn:ss', now) ,1,11 )
Ähhhhhhhhh?
FormatDateTime('dd.mm.yyyy ', now)

Zitat:
Delphi-Quellcode:
except
  ... mach hier irgendwelchen sinnlosen Scheiß, der die eigentliche Fehlermeldung zerstört ...
end;
oder
Delphi-Quellcode:
except
end;
Für sowas sollten Leute gesteinigt werden.

Kurz gefasst macht deine Funktion ausschließlich das:
Delphi-Quellcode:
function TimeStrToDateTime(InStr: String): TDateTime;
var
  i: Integer;
  fs: TFormatSettings;
begin
  for i := Length(InStr) downto 1 do
    if not CharInSet(InStr[i], ['0'..'9']) then
      InStr[i] := ':';
  fs.TimeSeparator := ':';
  //fs.ShortTimeFormat := 'hh:nn:ss'; // das ist sowieso egal, da die Delphi-Date/Time-Decodierungsfunktionen die Formatstrings fahrlässig ignorieren
  // und nur die richtigen Separatoren, sowie TimeAMString und TimePMString beachten

  //try
    Result := DateOf(Now) + StrToTime(Instr, fs);
  //except
  // Result := 666.000001; // ein unverständlicher krumer Wert ... warum nicht einfach 0?
  //end;
 end;
DateOf(Now) = Delphi-Referenz durchsuchenDate, aber jeder nutzt lieber Now.

Und in Wirklichkeit wolltest du wohl nur sowas machen?
Delphi-Quellcode:
function TimeStrToDateTime(InStr: String): TDateTime;
var
  fs: TFormatSettings;
begin
  fs.TimeSeparator := ':';
  InStr := ReplaceString(InStr, ' ', ''); // inkl. Trim
  InStr := ReplaceString(InStr, '/', ':'); // ein anderer bekannter TimeSeparator
  InStr := ReplaceString(InStr, '-', ':'); // ...
  Result := DateOf(Now) + StrToTime(Instr, fs);
end;
Wer "Dreck" eingibt, also z.B. irgendwelche falsche Zeichen/Buchstaben, der hat gefälligst mit der passenden Fehlermeldung zu rechnen, wo ihm gesagt wird, dass er Mist gebaut hat.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (12. Jan 2017 um 22:56 Uhr)
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#12

AW: Datumskonvertierung

  Alt 13. Jan 2017, 00:10
Reicht nicht eigentlich auch einfach nur ... StrToDateTime() ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 11:00 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