[fpc-pascal] How to use StrToDateTime() to convert a string with no delimiters?
Thomas Kurz
fpc.2021 at t-net.ruhr
Mon Apr 24 21:44:46 CEST 2023
I always use ScanDateTime for such purposes:
https://www.freepascal.org/docs-html/rtl/dateutils/scandatetime.html
You can explicitly define the pattern.
----- Original Message -----
From: Bo Berglund via fpc-pascal <fpc-pascal at lists.freepascal.org>
To: fpc-pascal at lists.freepascal.org <fpc-pascal at lists.freepascal.org>
Sent: Monday, April 24, 2023, 20:08:01
Subject: [fpc-pascal] How to use StrToDateTime() to convert a string with no delimiters?
I have a device that sends data over the serial port with a timestamp in this
format:
(230424194642W)
This is coded as yymmddhhnnss and the last char designates daylight savings
(S)ummer or normal (W)inter time. In the example above it is W for normal winter
time.
What I have done so far is:
- Remove the () at start and end
- Remove the W at the end
- Add 20 (as the century) up front
- Insert a space after the 6th char (so between date and time
- Set the TFormatsettings like this (to say that there are no separators):
FS.DateSeparator := #0; (Is this how it is done?)
FS.TimeSeparator := #0;
- Then the call:
Value := StrToDateTime(sValue, FS); (Value is declared as TDateTime)
This triggers an exception with the message:
"194522" is not a valid time
What is the proper way to decode a string as shown above?
Since the date part could be decoded, why not also the time part, after all I
separated the two with a space and set the same separators?
--
Bo Berglund
Developer in Sweden
_______________________________________________
fpc-pascal maillist - fpc-pascal at lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list