You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中将TimeOfDay类型转换为字符串?

TimeOfDay转字符串并在表格展示的实现方案

1. TimeOfDay转字符串的核心方法

TimeOfDay本身没有提供直接的格式化方法,需要自己编写转换逻辑,以下是两种常用格式的实现:

24小时制转换(适合办公类场景)

String formatTimeOfDay24(TimeOfDay time) {
  // 补零处理,保证小时、分钟为两位数字格式
  String hour = time.hour.toString().padLeft(2, '0');
  String minute = time.minute.toString().padLeft(2, '0');
  return '$hour:$minute';
}

12小时制转换(带AM/PM标识)

String formatTimeOfDay12(TimeOfDay time) {
  String period = time.hour >= 12 ? 'PM' : 'AM';
  // 处理12小时制的特殊情况:12点显示12而非0
  int hour12 = time.hour % 12 == 0 ? 12 : time.hour % 12;
  String hourStr = hour12.toString().padLeft(2, '0');
  String minuteStr = time.minute.toString().padLeft(2, '0');
  return '$hourStr:$minuteStr $period';
}

2. 整合到你的UserInfo类中

给UserInfo类添加一个计算属性,直接返回转换后的字符串,方便后续调用:

class UserInfo {
  String tanggal = DateFormat("yyyy-MM-dd").format(DateTime.now());
  TimeOfDay pulang;

  UserInfo(
    this.pulang,
    this.tanggal,
  );

  // 24小时制的下班时间字符串
  String get pulangTimeStr => formatTimeOfDay24(pulang);
  // 如果需要12小时制,替换成formatTimeOfDay12(pulang)
}

3. 在表格中展示

以Flutter的DataTable为例,直接使用转换后的字符串填充单元格即可:

DataTable(
  columns: const [
    DataColumn(label: Text('日期')),
    DataColumn(label: Text('下班时间')),
  ],
  rows: [
    // 假设已有userInfo实例
    DataRow(cells: [
      DataCell(Text(userInfo.tanggal)),
      DataCell(Text(userInfo.pulangTimeStr)),
    ]),
    // 更多数据行按此格式添加
  ],
)

内容的提问来源于stack exchange,提问作者1988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:36:14