AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Gültige Strings für ShortDateFormat
Thema durchsuchen
Ansicht
Themen-Optionen

Gültige Strings für ShortDateFormat

Ein Thema von MartinK · begonnen am 21. Sep 2014 · letzter Beitrag vom 22. Sep 2014
Antwort Antwort
MartinK

Registriert seit: 21. Jun 2009
Ort: Germering (Germany)
89 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Gültige Strings für ShortDateFormat

  Alt 21. Sep 2014, 12:06
Welche Strings kann man denn eigentlich der Eigenschaft "ShortDateFormat" von TFormat settings angeben.
Ich bin etwas verwirrt da ich hier im Web unterschiedliche Angaben finde und die OnlineHilfe auch nicht wirklich viel hergibt

teilweise so etwas wie "T/M/J" "J/M/T" (also mit deutschen Abkürzungen)
teilweise so etwas wie "YY/MM/DD"
...was ist denn jetzt richtig, und welche Kombinationen davon gibt es ?
als Trennzeichen immer das "/" oder wird der gültige "DateSeparator" verwendet um in ShortDateformat zwischen den Werten zu trennen

Außerdem wie unterscheidet man ein 2/4 Digit langes "Jahr"? So: "YYYY/MM/DD" ?

Danke für Eure Antworten
Martin
Martin Kuhn
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Gültige Strings für ShortDateFormat

  Alt 21. Sep 2014, 13:24
Diese FormatStrings werden von Delphi-Referenz durchsuchenSystem.SysUtils.FormatDateTime benutzt um aus einem Datum einen String zu erzeugen.

Also alles was da steht, kannst du für die Format-Angaben benutzen.

Wenn du alle möglichen Varianten haben möchtest, dann schreibe dir einen Algorithmus der Permutationen kann und lass den laufen. Um allerdings in annehmbarer Zeit das Ergebnis zu bekommen, solltest du dich auf einer Cray oder im amazon ECS einmieten und eine Menge Geld schon mal einplanen

Das ist übrigens auch ein gültiger FormatString
Code:
"hallo "YYYY
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Gültige Strings für ShortDateFormat

  Alt 21. Sep 2014, 14:27
Um allerdings in annehmbarer Zeit das Ergebnis zu bekommen, solltest du dich auf einer Cray oder im amazon ECS einmieten und eine Menge Geld schon mal einplanen
Also...

Es ist nämlich so, dass Aufzählen von Kombinationen -wenn es lange dauert- richtig lange dauert. Weil es manchmal doch ne ganze Menge Kombinationen gibt.

Also, angenommen, wir zählen alle Möglichkeiten auf, die Datumsformatbezeichner (so 40 Stück) hintereinander zu kleben. Dann sind das ... lass mich rechnen ... ähm.. verdammt viele, etwas mehr als es Atome gibt, oder etwas weniger, so genau kann ich das jetzt nicht sagen. In jedem Fall ist dann eine Cray oder Amazon's ECS auch keine große Hilfe mehr.

Mir ist natürlich klar, das deine Erwähnung einer Cray oder Amazon's ECS nur bildlich gemeint war, aber für alle, die meinen, das man mit mehr Power auch solche Aufzählungen erschlagen kann, dem sei gesagt: Nö.
  Mit Zitat antworten Zitat
MartinK

Registriert seit: 21. Jun 2009
Ort: Germering (Germany)
89 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Gültige Strings für ShortDateFormat

  Alt 21. Sep 2014, 16:55
Naja die Herren
also ganz so wild ist das ja wohl nicht wenn man "nur" einen (mittels Windows erzteugten) "String eines Datums"umwandeln möchte, oder?
Zusammen mit Uhrzeit würde das natürlcih schon lustiger

und hier nochmal erneut die Frage: was sind die gültien Übergabestrings für ShortDateFormat (String).
Vielleicht stelle ich mich einfach zu doof an, aber ich kann das nirgends erkennen


....und, eines habe ich schon mal gelernt: Schreibe nie nie nie einen Code der das Datum in einem String abhängig von den Windows eigenen FormatSettings abspeichert.

LG Martin
Martin Kuhn
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Gültige Strings für ShortDateFormat

  Alt 21. Sep 2014, 17:49
Ähm einen hatte ich doch schon genannt und möchtest du jetzt von uns eine Permutation über alle möglichen Format-Strings? Wenn du das Geld für den Speicher und die Rechenzeit zusammen hast, dann melde dich doch. Ich baue dir dann auch den Algorithmus dafür ...

noch ein komplettes Beispiel von der Emba Seite
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var S : string;
begin
  S := SysUtils.FormatDateTime(
    '"The meeting is on " dddd, mmmm d, yyyy, " at " hh:mm AM/PM', IncHour(Now(), 3));
  Label1.Caption := S;
end;
Das wäre btw auch ein gültiger Format-String ... ja auch für ShortDate ... wohl nicht sinnvoll, aber gültig.

Bau dir den zusammen, den du brauchst, oder erstelle dir eine Liste mit den Formaten die du brauchst.

Bzgl. des Speichern von Datumswerten dafür gibt es z.B. die ISO 8601 für ein Textformat und ansonsten gilt halt immer, dass irgendwelche Bytes solange irgendwas auch immer bedeuten, bis der genaue Kontext bekannt ist.

Es muss also bekannt sein, wie aus den gespeicherten Informationen wieder das wird, was es vorher bedeutet hat. Mit der ISO hat man da einen internationalen Standard.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (21. Sep 2014 um 17:53 Uhr)
  Mit Zitat antworten Zitat
kretabiker

Registriert seit: 10. Mär 2005
Ort: Bargteheide
183 Beiträge
 
Delphi 12 Athens
 
#6

AW: Gültige Strings für ShortDateFormat

  Alt 22. Sep 2014, 10:13
Hi MartinK,

vielleicht haben die anderen Jungs deine Frage anders verstanden als ich, der Hinweis auf die Funktion FormatDateTime ist glaube ich schon richtig: dort findest du - wie Sir Rufo auch schon betont hat - alle gültigen Formatierungskennzeichen für die Umwandlung eine Datum-/Zeit- oder DatumZeit-Wertes in einen String. So liefert dir FormatDateTime('ddddd', [DatumsVariable]) einen String zurück, der das Datum im Windows-Langformat widerspiegelt. Vorraussetzung für die Nutzung von FormatDateTime ist natürlich, das die DatumsVariable vom Typ TDate, TTime oder TDateTime ist.

Wenn du allerdings das Datum bereits als String gespeichert hast (so verstehe ich zumindest deinen Satz "....und, eines habe ich schon mal gelernt: Schreibe nie nie nie einen Code der das Datum in einem String abhängig von den Windows eigenen FormatSettings abspeichert. "), hast du ein anderes Problem. Dann hilft nur manuelles umparsen oder das Umwandeln des Strings (StrToDate) in einen Datumswert und dann wieder zurück in einen String mit FormatDateTime.
Udo Treichel

Geändert von kretabiker (22. Sep 2014 um 10:14 Uhr) Grund: Typos behoben
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Gültige Strings für ShortDateFormat

  Alt 22. Sep 2014, 10:45
@kretabiker

Die Funktion Delphi-Referenz durchsuchenStrToDate ist allerdings sehr beschränkt in ihrer Funktion und kann nicht jedes beliebige Format wieder in einen Datumswert zurückholen. Einstellungen in den FormatSettings werden so gut wie nicht berücksichtigt.

Wenn überhaupt hätte man eine bessere Chance mit Delphi-Referenz durchsuchenVarToDate, denn dort erfolgt die Umwandlung über eine System-Funktion vom OS und die ist da wesentlich flexibler (zaubern kann die aber auch nicht).

Ich vermute jetzt mal, was der TE möchte:

In den FormatSettings das ShortDateFormat mit unterschiedlichen Werten füllen um dann für jeden Wert mit StrToDate ein Datum zu ermitteln bis ein vernünftiges Ergebnis kommt.

Wie ich aber oben ausgeführt habe, kann man sich das sowas von schenken. Ein Blick in den Source-Code von StrToDate und VarToDate zeigt einem auch schön die Sinnlosigkeit dieser Vorgehensweise.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
kretabiker

Registriert seit: 10. Mär 2005
Ort: Bargteheide
183 Beiträge
 
Delphi 12 Athens
 
#8

AW: Gültige Strings für ShortDateFormat

  Alt 22. Sep 2014, 11:06
@Sir Rufo: Mit der Eingeschränktheit von StrToDate hast du recht, zumindest mit ShortDate-Formaten sollte es klappen, aber das selbst die Formatsettings so gut wie nicht berücksichtigt werden, wußte ich nicht - zu selten komme ich in die Verlegenheit, einen Datums-String in einen internen Datums-Wert zu konvertieren.

Schlussendlich kann nur der TE prüfen, ob die Funktion StrToDate, VarToDate oder vielleicht etwas ganz anderes seinen Anforderungen entspricht, denn wie du schon richtig sagst, vermuten wir nur, was er eigentlich genau vor hat - vor allem, in welchem Format und in welcher Form das Ausgangsdatum vorliegt.
Udo Treichel
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Gültige Strings für ShortDateFormat

  Alt 22. Sep 2014, 11:49
Welche Strings kann man denn eigentlich der Eigenschaft "ShortDateFormat" von TFormat settings angeben.
Ich bin etwas verwirrt da ich hier im Web unterschiedliche Angaben finde und die OnlineHilfe auch nicht wirklich viel hergibt
Das legt die Vermutung nahe, der TE weiß was er (wissen) will.

Außerdem wie unterscheidet man ein 2/4 Digit langes "Jahr"? So: "YYYY/MM/DD" ?
Woran ich hiernach doch gewisse Zweifel hege.
Meint er die Unterscheidung 1920 und 2020 ?

Unter Umständen hilft auch ein Blick in die wikipedia weiter.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 10:18 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