![]() |
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:
Ausgabe:
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.
Code:
Das nur als Beispiel für ein bestimmtes FormatSetting ("EN").
8/2/2016 9:05:03 AM
11/22/2016 12:15:13 PM |
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: |
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)? |
AW: Wieviele Zeichen hat ein Zeitstempel maximal?
Auf Win32-Systemen beträgt die Größe von System.Extended 10 Byte.
|
AW: Wieviele Zeichen hat ein Zeitstempel maximal?
Ins falsche Thema geklickt? :-D
|
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. |
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. |
AW: Wieviele Zeichen hat ein Zeitstempel maximal?
Zitat:
![]() ![]() ![]() 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 ( ![]() |
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 |
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:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz