Results 1 to 11 of 11

Thread: DateToStr en FormatSettings gebruiken met datum zonder dataseparator

  1. #1

    DateToStr en FormatSettings gebruiken met datum zonder dataseparator

    Hallo,

    Met TFormatsettings en StrToDate probeer ik een string om te zetten in een datum. Dit lukt op zich wel alleen zit er in mijn string geen DateSeperator, hoe geef ik dit aan?


    Bij voorbaat dank!

  2. #2
    Door in de shortdateformat de dateseparater weg te laten?
    1+1=b

  3. #3
    Counting your refs Paul-Jan's Avatar
    Join Date
    Feb 2002
    Location
    Lage Zwaluwe
    Posts
    2,160
    Een ontbrekende dateseparator wordt (in ieder geval onder de oude Delphi's) niet ondersteund. Jammer, want het is een populair formaat om datums in te representeren.
    Een handige workaround is om
    1. Eerst te kijken of je string lang genoeg is
    2. Zo ja, dan op de juiste plekken even een dateseparator tussen te voegen en
    3. Dan pas StrToDate toe te passen.

  4. #4
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Als het in ISO 8601 basic format is (YYYYMMDD) kan je ook gewoon EncodeDate loslaten op de naar Word geconverteerde substrings.

    Al vind ik het vreemd dat Delphi dit niet zou ondersteunen out-of-the-box. Klopt dat?
    Last edited by Dirk Andries; 15-Dec-08 at 09:05. Reason: Kromme zin (nog steeds eigenlijk). Brein werkt nog niet.
    All methodologies are based on fear. -- Kent Beck.

  5. #5
    Counting your refs Paul-Jan's Avatar
    Join Date
    Feb 2002
    Location
    Lage Zwaluwe
    Posts
    2,160
    Tot en met Delphi 6 in ieder geval niet (of we hebben voor niets support zitten inbouwen in ons framework ).

  6. #6
    Klopt inderdaad. In Delphi 2007 werkt het nog steeds niet:
    Delphi Code:
    1. var
    2.   fs: TFormatSettings;
    3. begin
    4.   GetLocaleFormatSettings(1024, fs);
    5.   // Lukt wel:
    6.   fs.ShortDateFormat := 'YYYY-MM-DD';
    7.   ShowMessage(DateToStr(StrToDate('2008-01-10', fs)));
    8.   // Lukt niet:
    9.   fs.ShortDateFormat := 'YYYYMMDD';
    10.   ShowMessage(DateToStr(StrToDate('20080110', fs)));
    11. end;
    1+1=b

  7. #7
    • Titel aangepast, was "Geen DateSeperator", zie 3 seconden
    1+1=b

  8. #8
    Stijn Sanders develyoy's Avatar
    Join Date
    Jun 2008
    Location
    GentBrugge, Belgi?½
    Posts
    1,046
    Heeft Delphi 2007 nog FormatDateTime? daarmee zou het ook moeten kunnen

  9. #9
    FormatDateTime gebruik je om de datum/tijd te tonen, niet om te ontleden.
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  10. #10
    Als je zeker bent dat het een datum in YYYYMMDD formaat is
    Delphi Code:
    1. var
    2.   Datum: TDateTime;
    3.   DatumString: string;
    4. begin
    5.   DatumString := '20081215';
    6.   Datum := EncodeDate(StrToInt(Copy(DatumString, 1, 4)),
    7.     StrToInt(Copy(DatumString, 5, 2)),StrToInt(Copy(DatumString, 7, 2)));
    8.   Label1.Caption := DateToStr(Datum);
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  11. #11
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Daarvoor gebruik je scandatetime. (fpc, maar is ontwikkeld op dit forum, source moet er grotendeels staan)

    http://www.nldelphi.com/forum/showth...ighlight=datum
    Last edited by marcov; 15-Dec-08 at 12:13.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •