Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wieviele Zeichen hat ein Zeitstempel maximal? (https://www.delphipraxis.net/190102-wieviele-zeichen-hat-ein-zeitstempel-maximal.html)

Der schöne Günther 30. Aug 2016 17:48

Wieviele Zeichen hat ein Zeitstempel maximal?
 
Einfache Aufgabe: Wie viele Zeichen brauchen wir um Datum und Uhrzeit anzuzeigen?

Mir fällt keine einfache Lösung ein. Folgendes Programm verdeutlicht es:
Delphi-Quellcode:
program Project15;

{$APPTYPE CONSOLE}

{$R *.res}

uses System.SysUtils, System.DateUtils;

var
   timestamp: TDateTime;
begin
   FormatSettings := TFormatSettings.Create('EN');

   timeStamp := EncodeDateTime(
      2016, 08, 02,
      09, 05, 03, 0
   );
   WriteLn( DateTimeToStr(timestamp) );

   timeStamp := EncodeDateTime(
      2016, 11, 22,
      12, 15, 13, 999
   );
   WriteLn( DateTimeToStr(timestamp) );

   readln;
end.
Ausgabe:
Code:
8/2/2016 9:05:03 AM
11/22/2016 12:15:13 PM
Das nur als Beispiel für ein bestimmtes FormatSetting ("EN").

jfheins 30. Aug 2016 17:57

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Allgemein natürlich beliebig viele.

Wenn du ein Limit setzen musst, dann musst du das Format festlegen und z.B. einfach nach ISO "2016-08-30T16:14:03Z" hinschreiben. Ansosnten kann ich ja hingehen und mir im Windows einstellen, dass die Standard-Locale "Llanfairpwllgwyngyllgogerychwyrndrobwllllantysili ogogogoch" ist, in deren Standard-Zeitformat eben Wochentage vorkommen mit ähnlich vielen Zeichen ;-)

Oder Klingonische Wochentage ... :stupid:

Der schöne Günther 30. Aug 2016 18:04

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Ich kann das Format nicht festlegen, das ist, was der Benutzer grade als Anwendungssprache eingestellt hat.

Ich tue mich schwer mit dem "maximalen Zeitstempel". Wer sagt mir dass z.B. nur "vormittags" an die Uhrzeit drangeschrieben wird, nicht aber "nachmittags" (und somit länger ist)?

t.roller 30. Aug 2016 20:11

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Auf Win32-Systemen beträgt die Größe von System.Extended 10 Byte.

Der schöne Günther 30. Aug 2016 20:47

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Ins falsche Thema geklickt? :-D

nahpets 30. Aug 2016 22:28

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Nein, nicht ins falsche Thema geklickt.

Die Zeitangabe ist eine Zahl, vor dem Komma stehen die Tage, hinter dem Komma die Tagesanteile.

Die einfachste Methode ist (meiner Meinung nach) diese Zahl zu speichern.

Muss die Zeit, das Datum oder eine Kombination daraus angezeigt werden, nimmt man dafür die Systemeinstellungen des Rechners, auf dem die Software gerade läuft, muss sich aber keinerlei Gedanken darüber machen, wie diese Einstellungen sind, um die daraus resultierende "beliebig lange Zeichenfolge" verlustfrei abzuspeichern.

Speichere ich für Zeitangaben nur die Zahl ab, so ist es egal, ob der Anwender auf seinem System das Datum nun in der deutschen, der englischen, griechischen, römischen ... Form, mit oder ohne ausgeschriebene Wochentage, Monate ... eingestellt hat. Die Zahl bleibt immer die Gleiche und in der Anzeige stehts halt so, wie der Anwender es für sich als gut befindet.

Weiterer Vorteil: Hast Du die Zeitangabe in 'ner Datenbank als Zahl abgespeichert, so kannst Du immer aufsteigend oder absteigend danach sortieren per "order by Zeitspalte". Du musst Dir keinen Kopp darüber machen, ob Du jetzt zuerst eine (wie auch immer geartete) Stringzerlegung implementieren musst, damit Du eine Zeichenfolge bekommst, die mit dem Jahr beginnt, dann den Monat enthält, gefolgt vom Tag und der Uhrzeit.

Hier könntest Du, je nach der vom Anwender getroffenen Systemeinstellung für Datums- und Zeitangaben richtig Spass bekommen. System.Extended ist da in der Verwendung banal einfach.

himitsu 30. Aug 2016 22:56

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Genau, Datenspeicherung/-verarbeitung und Datenanzeige sind vollkommen getrennt.

Der User bekommt es im aktuellen Systemformat und intern nutzt man ein definiertes Format. (binär oder sonstwie)
Wäre doch zu blöd, wenn du es speicherst, jemand zwischendurch die Sprache ändert oder von einem anderen System/Benutzerkonto drauf zugreift und du das alte Format nicht mehr auslesen/verstehen kannst. :stupid:

Alternativ muß man zu den Daten das Speicherformat mit speichern, um beim Auslesen die Daten immer verstehen zu können.

BUG 30. Aug 2016 23:48

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1346228)
Einfache Aufgabe: Wie viele Zeichen brauchen wir um Datum und Uhrzeit anzuzeigen?

Ein Wort passt da nicht rein :stupid:


Was willst du denn mit der Zeit machen: ausgeben (GUI/Report) oder irgendwo speichern? Ich persönlich mag ja UNIX-Timestamps als Austauschformat, wenn man in Delphi bleibt kann man vermutlich auch das interne Format benutzen. Keine Ahnung, ob die Referenzzeit des Formats in Delphi (December 30, 1899; 12:00 A.M) auch eine festgelegte Zeitzone hat ... sonst könnte das auch schnell unangenehm werden.

Sherlock 31. Aug 2016 07:24

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Na, das ist doch jetzt aber einfach, wenn Du folgende Regeln beachtest:
1) Zeige einen Zeitstempel an
2) Der Anwender ist König
3) Der Anwender darf beliebige Anzeigeformate einstellen

Lösung: Beliebig lange.

Wenn Deine Anwendung also derartig flexibel sein soll/muss/darf, dann mußt Du auch Deine Anwendung entsprechend bauen. Wenn also ein beliebiges Format für eine Zeitstempel-Anzeige gestattet ist, dann mußt Du eben ausmessen, wie lange das im jeweils konkreten Fall wird, und entsprechend für Platz sorgen. Du könntest natürlich auch den faulen/praktischen/KISS Weg gehen und das Format selbst festlegen, eventuell basierend auf den Gewohnheiten Deiner drei häufigsten Anwendergruppen (nein, nicht Frauen, Männer und Kinder, sondern Deutsche, Engländer und Russen). Für diese Gruppen definierst Du dann fixe Formate basierend auf deren jeweiligen Landesstandards, die kannst Du dann per Konfiguration zur Auswahl geben, oder eben selbst festlegen. Dann weisst du wie lange so ein Zeitstempel maximal werden kann (vermutlich den 31.12.9999 23:59:59 als Grundlage nehmen). Insgesamt auch nicht soooo KISS, aber weniger aufwendig als die total flexible Lösung.

Sherlock

Der schöne Günther 31. Aug 2016 08:32

AW: Wieviele Zeichen hat ein Zeitstempel maximal?
 
Leute, bitte. :spin2:

Vielen Dank für die enthusiastischen Beiträge, aber ... Ich meine Zeichen (nicht Bytes). Zeichen auf dem Bildschirm, auf dem Papier, sonstwo. Niemand hat etwas von Speichern und Datenformaten gesagt.

Kann ich wissen wie breit ich meine Anzeige mindestens machen muss?
Mehr nicht :-D

Das Format kann ich nicht vorgeben, das hat jede Landeseinstellung anders und das muss man respektieren.

Zitat:

Zitat von Sherlock (Beitrag 1346273)
Dann weisst du wie lange so ein Zeitstempel maximal werden kann (vermutlich den 31.12.9999 23:59:59 als Grundlage nehmen). Insgesamt auch nicht soooo KISS, aber weniger aufwendig als die total flexible Lösung.

Danke. Genau so habe ich es bislang. Das fällt natürlich flach sollte eine Ländereinstellung z.B. nur ein "AM" dranschreiben, aber kein "PM", aber das ist bislang das mit dem besten Aufwand/Nutzen-Verhältnis.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 Uhr.
Seite 1 von 2  1 2      

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