方法一:使用字段编辑器设置显示格式

  1. 在窗体上选择你的数据集组件(如 TADOQuery、TFDQuery 等)

  2. 双击数据集组件打开字段编辑器

  3. 右键点击字段编辑器,选择 "Add all fields" 或添加特定的日期字段

  4. 选择日期字段,在 Object Inspector 中设置以下属性:

    • DisplayFormat: 设置为 yyyy年mm月dd日

    • EditMask: 设置为 !9999年99月99日;1;_

方法二:在数据集组件的 OnGetText 事件中处理

delphi
 
复制
 
下载
procedure TForm1.YourDataSetDateFieldGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  if not Sender.IsNull then
    Text := FormatDateTime('yyyy年mm月dd日', Sender.AsDateTime)
  else
    Text := '';
end;

方法三:使用 DBGrid 的 OnDrawColumnCell 事件

delphi
 
复制
 
下载
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  S: string;
begin
  if Column.Field.DataType = ftDate then
  begin
    if not Column.Field.IsNull then
    begin
      S := FormatDateTime('yyyy年mm月dd日', Column.Field.AsDateTime);
      DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, S);
    end
    else
    begin
      DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, '');
    end;
  end
  else
    // 让默认处理程序处理其他类型的字段
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

方法四:在 SQL 查询中格式化日期

如果你使用的是 SQL 数据库,可以在查询语句中直接格式化日期:

sql
 
复制
 
下载
-- 对于 SQL Server
SELECT CONVERT(varchar, YourDateField, 112) + '年' + 
       SUBSTRING(CONVERT(varchar, YourDateField, 112), 5, 2) + '月' +
       SUBSTRING(CONVERT(varchar, YourDateField, 112), 7, 2) + '日' as FormattedDate
FROM YourTable

-- 对于 MySQL
SELECT DATE_FORMAT(YourDateField, '%Y年%m月%d日') as FormattedDate
FROM YourTable

推荐使用方法一

方法一(字段编辑器)是最推荐的方式,因为:

  • 代码简洁易维护

  • 不影响数据编辑功能

  • 格式设置与数据层分离

如果你需要更复杂的日期格式或者条件格式化,可以考虑使用方法二或方法三。