如何在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
相关产品推荐
相关产品推荐

