我有以下代码在我的系统上工作正常,因为我的系统的日期时间格式为dd-mm-yyyy,但是在系统的日期时间格式为dd / mm / yyyy的情况下,代码不起作用。< / p>
try
fmt.LongDateFormat:='dd-mm-yyyy';
fmt.DateSeparator :='-';
fmt.LongTimeFormat :='hh:nn:ss.z';
fmt.TimeSeparator :=':' ;
dateTime :=42467.51801;
strDate :=FormatDateTime('dd-mm-yyyy hh:nn:ss.z', dateTime);
time := StrToDateTime(strDate,fmt);
strDate :=FormatDateTime('dd-mm-yyyy hh:nn:ss.z', time);
ShowMessage('DateTime := ' +strDate) ;
except
on e: Exception do
ShowMessage('Exception message = '+e.Message);
end;
格式为dd / mm / yyyy的相同代码在我的系统上不起作用。请帮帮我。
答案 0 :(得分:1)
您的代码正在使用LongDateFormat
和LongTimeFormat
,但StrToDateTime()
不使用这些值。
StrToDate()
和StrToDateTime()
使用ShortDateFormat
(和TwoDigitYearCenturyWindow
(本例不适用)来解析日期。
StrToTime()
和StrToDateTime()
使用硬编码逻辑来解析时间。您无法指定小时/分钟/秒/毫秒值的顺序/存在,您只能指定TimeSeparator
,DecimalSeparator
,TimeAMString
和TimePMString
值。< / p>
请改为尝试:
try
fmt.ShortDateFormat := 'dd/mm/yyyy';
fmt.DateSeparator := '/';
fmt.TimeSeparator := ':';
fmt.DecimalSeparator := '.';
dateTime := 42467.51801;
strDate := FormatDateTime('dd/mm/yyyy hh:nn:ss.z', dateTime, fmt);
time := StrToDateTime(strDate, fmt);
strDate := FormatDateTime('dd/mm/yyyy hh:nn:ss.z', time, fmt);
ShowMessage('DateTime := ' + strDate);
except
on e: Exception do
ShowMessage('Exception message = '+e.Message);
end;