AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Sonstiges Uhrzeit und Datum regionsunabhängig ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Uhrzeit und Datum regionsunabhängig ausgeben

Ein Thema von daniel-volk · begonnen am 17. Jul 2003 · letzter Beitrag vom 19. Jul 2003
 
daniel-volk

Registriert seit: 16. Jul 2003
170 Beiträge
 
Delphi 6 Enterprise
 
#1

Uhrzeit und Datum regionsunabhängig ausgeben

  Alt 17. Jul 2003, 08:07
Jeder, der schon einmal in einem Programm mit Daten und Uhrzeiten gearbeitet hat, kennt das Problem.
Mit den Befehlen
Delphi-Quellcode:
uhrzeit := TimeToStr(Time);
lokaldatum := DateToStr(Date);
lassen sich so einfach das Datum und die Uhrzeit in einen String schreiben. Mit ein wenig Stringverarbeitung kann man damit dann sogar rechnen.
Doch auch das Problem ist nicht weit: In Deutschland sind die PCs (normalerweise) so eingestellt, dass die Zeit im 24h-Format als HH:mm:ss und das Datum als TT.MM.JJJJ werden. Doch was ist in anderen Ländern, wo die Zeit mit AM und PM ausgegeben wird? Oder in Ländern, in denen beim Datum keine Nullen geschrieben werden, sodass der Monat plötzlich nur noch eine Stelle hat?
Noch schlimmer ist es mit der amerikanischen Zeit. Die Amerikaner verwenden nämlich das 12h-Zeitformat und ein Datum der Form: M/T/JJJJ.
Der Monat und der Tag sind also vertauscht und werden zudem noch so kurz wie möglich geschrieben.

Der folgende Algorithmus gibt grundsätzlich die aktuelle Zeit im Format HH:mm:ss und das aktuelle Datum im Format TT.MM.JJJJ aus. Völlig unabhängig von der Region. (Beispiel: 08:55:30 17.07.2003)
Wenn beim Uhrzeitalgorithmus der Ausgeklammerte Code auch mit verwendet wird, dann wird die Zeit mit Millisekunden angegeben, also im Format HH:mm:ss,sss (Sekunden mit drei Nachkommastellen).

Code für die Zeitausgabe:
Zuerst einmal müssen die Variable "Uhrzeit" und eine Prozedur deklariert werden:
Delphi-Quellcode:
uhrzeit: string;
procedure clacTime;
Anschließend kann diese Prozedur hinzugefügt werden:
Delphi-Quellcode:
procedure TForm1.calcTime;
var
  std, min, sec, msec : word;
  stdstr, minstr, secstr{, msecstr} : string;
begin
  DecodeTime(Time, std, min, sec, msec);
  stdstr := IntToStr(std);
  if length(stdstr) < 2 then stdstr := '0' + stdstr;
  minstr := IntToStr(min);
  if length(minstr) < 2 then minstr := '0' + minstr;
  secstr := IntToStr(sec);
  if length(secstr) < 2 then secstr := '0' + secstr;
  uhrzeit := stdstr + ':' + minstr + ':' + secstr;
  {msecstr := IntToStr(msec);
  Case length(msecstr) of
    1: msecstr := '00' + msecstr;
    2: msecstr := '0' + msecstr;
  end;
  uhrzeit := uhrzeit+','+msecstr;}

// Die Klammern entfernen, wenn die Zeit mit Millisekunden ausgegeben werden soll.
end;
Um jetzt z.B. die Zeit von einem Timer aus über das Label1 anzeigen zu lassen, ist nur noch folgender Code notwendig:
Delphi-Quellcode:
clacTime;
Label1.Caption := Uhrzeit;
Code zum Ausgeben des Datums:
Es müssen erneut ein paar Dinge deklariert werden:
Delphi-Quellcode:
lokalDatum: string;
procedure calcDate;
Die Prozedur sieht folgendermaßen aus:
Delphi-Quellcode:
procedure TForm1.calcDate;
var
  jahr, monat, tag : word;
  jahrstr, monatstr, tagstr : string;
begin
  DecodeDate(Date, jahr, monat, tag);
  jahrstr := IntToStr(Jahr);
  Case length(jahrstr) of
    1: jahrstr := '000' + jahrstr;
    2: jahrstr := '00' + jahrstr;
    3: jahrstr := '0' + jahrstr;
  end;
  monatstr := IntToStr(monat);
  if length(monatstr) < 2 then monatstr := '0' + monatstr;
  tagstr := IntToStr(tag);
  if length(tagstr) < 2 then tagstr := '0' + tagstr;
  lokaldatum := tagstr + '.' + monatstr + '.' + jahrstr;
end;
Die Verwendung ist völlig analog zur Uhrzeit.

[edit=Matze]Code formatiert. Mfg, Matze[/edit]
  Mit Zitat antworten Zitat
 

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 14:38 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