我尝试使用C ++ Builder 2009将特定格式的字符串转换为TDateTime
:
TDateTime dt, dt2;
TFormatSettings FS, FS2;
UnicodeString datestring = "17/10/2017 13:24:33";
UnicodeString datestring2 = "2017.17.10 13:24:33";
FS.DateSeparator = '/';
FS.ShortDateFormat = "dd/mm/yyyy";
FS.LongTimeFormat = "hh:nn:ss";
FS.TimeSeparator = ':';
FS2.DateSeparator = '.';
FS2.ShortDateFormat = "yyyy.dd.mm";
FS2.LongTimeFormat = "hh:nn:ss";
FS2.TimeSeparator = ':';
try{
dt = StrToDateTime(datestring, FS);
dt2 = StrToDateTime(datestring2,FS2);
}catch(EConvertError& e)
{
int a = 2;
}
转换dt
没问题,但转换dt2
会引发异常:
''2017.17.10 13:24:33''不是有效的日期和时间
答案 0 :(得分:0)
根据StrToDate()
的文档(也适用于StrToDateTime()
):
S
必须由两个或三个数字组成,由DateSeparator
全局变量或其TFormatSettings
等效项定义的字符分隔。月,日和年的顺序由ShortDateFormat
全局变量或其TFormatSettings
等效项确定 - 可能的组合是m / d / y,d / m / y和y / M / d 强>
失败的日期是y/d/m
格式,这些RTL函数不支持。有效的日期是d/m/y
格式,支持。
答案 1 :(得分:0)