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!
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!
Door in de shortdateformat de dateseparater weg te laten?
1+1=b
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.
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.
Tot en met Delphi 6 in ieder geval niet (of we hebben voor niets support zitten inbouwen in ons framework ).
Klopt inderdaad. In Delphi 2007 werkt het nog steeds niet:Delphi Code:
var fs: TFormatSettings; begin GetLocaleFormatSettings(1024, fs); // Lukt wel: fs.ShortDateFormat := 'YYYY-MM-DD'; ShowMessage(DateToStr(StrToDate('2008-01-10', fs))); // Lukt niet: fs.ShortDateFormat := 'YYYYMMDD'; ShowMessage(DateToStr(StrToDate('20080110', fs))); end;
1+1=b
- Titel aangepast, was "Geen DateSeperator", zie 3 seconden
1+1=b
Heeft Delphi 2007 nog FormatDateTime? daarmee zou het ook moeten kunnen
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
Als je zeker bent dat het een datum in YYYYMMDD formaat isDelphi Code:
var Datum: TDateTime; DatumString: string; begin DatumString := '20081215'; Datum := EncodeDate(StrToInt(Copy(DatumString, 1, 4)), StrToInt(Copy(DatumString, 5, 2)),StrToInt(Copy(DatumString, 7, 2))); Label1.Caption := DateToStr(Datum);
DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden
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.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks