Toon posts:

[Delphi] Convert date

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik krijg vanuit een database een datum binnen met het volgende formaat:

6-2-02

Deze wil ik omzetten naar het volgende:

06022002
Weet iemand hoe ik dat doe?

  • Paul
  • Registratie: September 2000
  • Laatst online: 13-09 15:27
Aaargh... Ik kan gewoon niet lezen, en het is nog vroer, zullen we het daar op houden?
Ik had nl wel wat leuke code gemaakt, maar daar had je niks aan, niet bij die datum...

Allereerst: wat krijg je terug? Een string, of een date?

Krijg je een date, dan kan het met FormatDateTime:

function FormatDateTime(const Format: string; DateTime: TDateTime): string;
Kijk ook vooral in de Delphi help, die is erg goed :) Daar staat ook precies hoe je Format in moet vullen.
code:
1
2
var goedeDatum : string;
goedeDatum := FormatDateTime('ddmmyyyy', mijnDatabaseDatum);

Met een string kan het ook wel, maar dat is wat meer werk :) Zeg eerst maar of je nu een string of een date hebt...

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Paul
  • Registratie: September 2000
  • Laatst online: 13-09 15:27
Topicstarter?

Nou ja, hier dan maar (snel in mekaar geflansd) de code om de string variant om te zetten:
Een maand of dag hebben max 2 cijfers, en min 1, jaar kan 1, 2 of 4 hebben.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function zetDatumOm(s : string): string;
var uitkomst, temp : string;
    i, lengte   : integer;
begin
  temp     := '';
  uitkomst := '';

  //Dagen en maanden. Hebben de jaren geen eeuwaanduiding,
  //dan kan I naar 3, en daarna ben je klaar :) op een
  //insert('20', s, 5) na (oid, moet je ff in de help kijken)

  for i := 1 to 2 do
    begin
    if (s[2] = '-') then
      lengte := 1
    else
      lengte := 2;
    temp := copy(s, 1, lengte);
    s    := copy(s, lengte + 2, 10); // +s is voor streepje
    if (lengte = 1) then
      uitkomst := uitkomst + '0' + temp
    else
      uitkomst := uitkomst + temp;
    end;

  // jaren (niet nodig if boven i tot 3
  case (high(s))
    begin
    1: uitkomst := uitkomst + '200' + s;
    2: uitkomst := uitkomst + '20' + s;
    3: uitkomst := uitkomst + '2' + s; // Nou ja, zou kunnen :P
    4: uitkomst := uitkomst + s;
    end;
end;

Ik heb hier geen delphi bij de hand, dus of het compileerd weet ik niet :) Verderk akn het zijn dat ik met het copy-en mbv lengte wat denkfoutjes heb gemaakt, maar zo zou het toch ongeveer moeten 8-) Ook moet je voor die insert even in de help kijken.

[edit]
Layout ver-ont-neukt... Onderste commentaar ingekort, stond een :? bij. :)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock