Hello, I have some doubts about working formattedRead
with space chars.
Example:
import std : formattedRead, DateTime, stderr, each;
DateTime parseDT(string str)
{
int d,mo,y, h,m,s;
formattedRead!"%d/%d/%d %d:%d:%d"(str, d,mo,y, h,m,s);
return DateTime(y,mo,d, h,m,s);
}
void tryParse(string s)
{
try
{
auto dt = parseDT(s);
stderr.writefln!"valid '%s': %s"(s, dt);
}
catch (Exception e)
stderr.writefln!"INVALID '%s': %s"(s, e.msg);
}
void main()
{
auto vs = [
"",
"1",
"1/1",
"1/1/1",
"1/1/1 1",
"1/1/1 1:1",
"1/1/1 1:1:1",
];
vs.each!tryParse;
}
outputs:
INVALID '': 0 is not a valid month of the year.
INVALID '1': parseToFormatSpec: Cannot find character '/' in the input string.
INVALID '1/1': parseToFormatSpec: Cannot find character '/' in the input string.
valid '1/1/1': 0001-Jan-01 00:00:00 <<< see here
INVALID '1/1/1 1': parseToFormatSpec: Cannot find character ':' in the input string.
INVALID '1/1/1 1:1': parseToFormatSpec: Cannot find character ':' in the input string.
valid '1/1/1 1:1:1': 0001-Jan-01 01:01:01
Is space a special char for formattedRead
and it simple stop parse without throwing exception if not found space (that represented in fmt string)?
Have formattedRead
any other special chars?
Or it's bug?