AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TDateOrder und GetDateOrder aus System.SysUtils nutzen
Thema durchsuchen
Ansicht
Themen-Optionen

TDateOrder und GetDateOrder aus System.SysUtils nutzen

Ein Thema von Sherlock · begonnen am 30. Mär 2016 · letzter Beitrag vom 31. Mär 2016
Antwort Antwort
Benutzerbild von Sherlock
Sherlock
Online

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#1

TDateOrder und GetDateOrder aus System.SysUtils nutzen

  Alt 30. Mär 2016, 15:37
Ich bin grad irgendwie unfähig. Ich bekomme von einem Webservice ein Datum im Format 'YYYY-MM-DD' das läßt sich unter Windows problemlos mit Delphi-Referenz durchsuchenVariants.VarToDateTime ins korrekte TDate konvertieren. Sobald ich zu Mac OS wechsle, klappt das nicht mehr, weil in den Tiefen der Delphi-Referenz durchsuchenSysUtils einiges nicht so implementiert ist, wie ich es erwarten würde. Unter Windows übernimmt offenkundig eine Betriebssystemfunktion die erfolgreiche Konvertierung. In anderen Systemen hat man diesen Komfort nicht und muß sich auf Embarcadero verlassen Man landet dann über kurz oder lang in der Funktion SysUtils.ScanDate, die leider, leider die Delphi-Referenz durchsuchenFormatSettings des Systems beim Umwandlungsversuch zu Rate zieht. Da findet sie dann in meinem deutschen System als Resultat von GetDateOrder ein doDMY an Stelle des nötigen doYMD und die Sache ist gelaufen, weil dann der String falsch ausgewertet wird. Nun dachte ich mir, ich könnte für den nicht Windows Fall das Datum selbst für die Umwandlung aufhübschen und wollte diese neckischen DateOrder Geschichten nutzen...aber das geht gar nicht. System.SysUtils ist im uses und dennoch kennt Herr Delphi weder TDateOrder noch GetDateOrder. Was mache ich falsch? Oder hat grad jemand eine bessere Datumskonvertierung (Plattformunabhängig!!) parat?

Grüßle,
Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: TDateOrder und GetDateOrder aus System.SysUtils nutzen

  Alt 30. Mär 2016, 15:51
Das ist doch ISO8601.

Warum nicht einfach
http://docwiki.embarcadero.com/Libra....ISO8601ToDate
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#3

AW: TDateOrder und GetDateOrder aus System.SysUtils nutzen

  Alt 30. Mär 2016, 15:55
System.SysUtils ist im uses und dennoch kennt Herr Delphi weder TDateOrder noch GetDateOrder.
Die kennt Herr Delphi schon, aber er meint, die gehen dich nichts an! Die sind halt nur im Implementation-Teil deklariert.

Was funktioniert denn bei StrToDate bzw. StrToDateTime nicht?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock
Online

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TDateOrder und GetDateOrder aus System.SysUtils nutzen

  Alt 31. Mär 2016, 06:59
System.SysUtils ist im uses und dennoch kennt Herr Delphi weder TDateOrder noch GetDateOrder.
Die kennt Herr Delphi schon, aber er meint, die gehen dich nichts an! Die sind halt nur im Implementation-Teil deklariert.
Gnah! Wenn ich nicht mal das weiss, dann verdiene ich die besagten Methoden auch nicht
Was funktioniert denn bei StrToDate bzw. StrToDateTime nicht?
Mit der Methode kommt sowohl auf Windows als auch auf dem Mac:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt DatumsTest ist eine Exception der Klasse EConvertError mit der Meldung ''1992-02-29' ist kein gültiges Datum' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Immerhin konnte unter Windows VarToDateTime korrekte Ergebnisse liefern.


Aber unser Supermodell hat die Lösung: ISO8601ToDate funktioniert auf Windows und Mac erwartungskonform.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann

Geändert von Sherlock (31. Mär 2016 um 07:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#5

AW: TDateOrder und GetDateOrder aus System.SysUtils nutzen

  Alt 31. Mär 2016, 07:18
Mit der Methode kommt sowohl auf Windows als auch auf dem Mac:
Zitat:
---------------------------
...
Im Projekt DatumsTest ist eine Exception der Klasse EConvertError mit der Meldung ''1992-02-29' ist kein gültiges Datum' aufgetreten.
...
Hier nicht:
Delphi-Quellcode:
procedure Main;
var
  dt: TDateTime;
  fmt: TFormatSettings;
begin
  fmt := TFormatSettings.Create;
  fmt.ShortDateFormat := 'YYYY-MM-DD';
  fmt.DateSeparator := '-';
  dt := StrToDate('1992-02-29', fmt);
  Writeln(DateToStr(dt));
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock
Online

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TDateOrder und GetDateOrder aus System.SysUtils nutzen

  Alt 31. Mär 2016, 07:26
Ich geh jetzt mal in die Ecke und mach eine Stunde:
Ich finde dennoch die ISO8610-Lösung charmant, da das Datum definitiv immer in dem Format von der Debian-Python-Lösung geschickt wird.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#7

AW: TDateOrder und GetDateOrder aus System.SysUtils nutzen

  Alt 31. Mär 2016, 08:06
Ich finde dennoch die ISO8610-Lösung charmant, da das Datum definitiv immer in dem Format von der Debian-Python-Lösung geschickt wird.
Klar! Wenn die Bediungungen nun mal so sind, dann ist das die eleganteste Lösung. Vor allem sieht man dann auch gleich, daß man da eben kein anderes Datumsformat reinstecken darf.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TDateOrder und GetDateOrder aus System.SysUtils nutzen

  Alt 31. Mär 2016, 08:30
Ich habe mir dafür einen record helper geschrieben, das geht auch ganz gut. Einziger Nachteil: der record helper aus SysUtils wird dadurch ungültig, Dinge wie AsString funktionieren also nicht mehr.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:33 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