将数据库时间字段转换为格式化字符

时间:2014-03-01 00:00:01

标签: delphi

如何格式化'INT_TIME'的结果,使其不显示为Time。 'mytime'是时间字段,'INT_TIME'是字符串。

procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
 ADOTable1.Fields.FieldByName('INT_TIME').asString := TimeToStr(ADOTable1.FieldByName('MYTIME').AsDateTime) ;
end;

现在,字符串显示就像时间字段(07:30:00)。 新的...

已编辑:

1 个答案:

答案 0 :(得分:2)

您不需要INT_TIME字段。 (顺便说一下,INT_TIME是字符串列的可怕名称。)您可以使用AsDateTime本身的TField,并使用DateUtils中的函数来检索单独的小时和分钟值。正如@TLama在他的评论中所说,如果您只使用显示值而不是使用计算字段,则可以使用OnGetText事件:

procedure TForm4.ClientDataSet1MyTimeGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  Text := Format('%d%s%d', [HourOf(Sender.AsDateTime),
                            FormatSettings.DecimalSeparator,
                            MinuteOf(Sender.AsDateTime)]);
end;