Entwickler-Ecke

Sonstiges (Delphi) - Datum auslesen und zerlegen


chris_davidi - Do 11.09.03 14:19
Titel: Datum auslesen und zerlegen
Hallo...

Mich würde interessieren, wie das funktioniert. Ich würde gerne das Datum auslesen lassen und in ein RichEdit- Feld schreiben lassen. ist ja relativ einfach... Brauche aber nur das ja und die beiden Endstellen (also statts 2003 nur 03). Wie funktioniert das? Habe gehört man muss das Datum als String festlegen und dann zerlegen, so wie man es haben will.

Habe davon leider keine Ahnung und würde mich freuen, wenn dies jemand machen und auch erklären könnte an diesem Beispiel, damit ich das lerne...

Vielen Dank im Vorraus
Gruss
Chris


Hansi@OMG - Do 11.09.03 14:36

Ich hab dir jetzt mal ein einfaches Beispiel mit einer Funktion geschrieben, damit du jedesmal, wenn du das auslesen willst, nicht soviel tippen musst:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function jahreszahl(Datum:String):String;
var i : integer;
begin
i := pos('200',Datum);    \\Sucht nach dem Jahr 200...
result:=copy(Datum,i+2,11); \\Kopiert von dem String nur die letzten zwei jahreszahlen
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.caption:=DateToStr(now); \\ Gibt dir das aktuelle Datum als String
label2.Caption:=jahreszahl(label1.Caption); \\ Gibt dir das was du willst
end;


AndyB - Do 11.09.03 14:36

Es geht auch so ohne String-Umwandlung:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  d: TDateTime;
  Day, Month, Year: Word;
begin
  d := Date; // aktuelles Datum
  DecodeDate(d, Year, Month, Day);

  Year := Year mod 100// auf 00-99 kürzen
  if Year < 10 then
    Result := '0' + IntToStr(Year)
  else
    Result := IntToStr(Year);
end;



Zitat:
i := pos('200',Datum); \\Sucht nach dem Jahr 200...
result:=copy(Datum,i+2,11); \\Kopiert von dem String nur die letzten zwei jahreszahlen

Und was ist, wenn jemand das Datumsformat yyyy-mm-dd eingestellt hat? Oder das Programm auch noch 2010 funktionieren soll?


chris_davidi - Di 16.09.03 11:55

Leider funktionieren beiden Codes bei mir nicht. Probiert es mal bei euch...

Ja, stimmt. Wenn der Benutzer ein anderes Datumsformat eingestellt hat, soll trotzdem nur vom Jahr die letzen beiden Ziffern angezeigt werden.

Habe jedoch keine Ahnung wie das in Delphi geht, ich bekomme immer nur Fehler, wenn ich an den Codes von euch rumprobiere. Hoffe mir kann jemand helfen.


Keldorn - Di 16.09.03 12:41

Zitat:

Habe jedoch keine Ahnung wie das in Delphi geht, ich bekomme immer nur Fehler, wenn ich an den Codes von euch rumprobiere. Hoffe mir kann jemand helfen.

wie soll man dir denn helfen, wenn du nich sagst, welche Fehlermeldungen du bekommst?


chris_davidi - Di 16.09.03 12:53

Baue am Besten mal den Code bei dir ein, dass ist besser als den Fehler zu nennen.

Ein Fehler bei dem Code von Hansi zum Beispiel war, das result nicht definiert ist. Dann habe ich es definiert und dann kam wieder ein Fehler... Wäre wirklich besser, wenn ihr es selber anschaut, ist besser, als den Fehler erklärt zu bekommen, finde ich.


Keldorn - Di 16.09.03 13:56

chris_davidi hat folgendes geschrieben:
Baue am Besten mal den Code bei dir ein, dass ist besser als den Fehler zu nennen.

Ein Fehler bei dem Code von Hansi zum Beispiel war, das result nicht definiert ist. Dann habe ich es definiert und dann kam wieder ein Fehler... Wäre wirklich besser, wenn ihr es selber anschaut, ist besser, als den Fehler erklärt zu bekommen, finde ich.

Du weißt den Aufbau von Funktionen und Proceduren?
Hansi´bsp läßt sich kompilieren (hat nur \\ mit // verwechselt)
bei Andy fehlt nur der funktionskopf

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Funktion Jahreszahl:string;  //oder wie du deine Funktion nennen willst
var 
  d: TDateTime; 
  Day, Month, Year: Word; 
begin 
...


Aufruf:

Delphi-Quelltext
1:
2:
  ...
  label1.caption:=Jahreszahl;

geht sehr wohl, aber du mußt halt auch noch n bissel selber nachdenken
Mfg Frank


Wolff68 - Mi 17.09.03 20:49

Oder probiers einfach damit:

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := FormatDateTime('YY',Now);
end;

[Hilfe : "Datum und Uhrzeit"]