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

Flutter技术问题:如何将时间字符串转为保留前导零的整数

解决时钟时间转带前导零整数的问题

首先明确:整数类型本身不会存储前导零,因为前导零不改变整数的数值(比如0534和534在数值上完全等价)。你遇到的问题本质是如何让终端设备显示出带前导零的四位时间,而非让整数本身保留前导零。

可行解决方案

方案1:计算时间对应的整数,终端侧负责格式化显示

这种方式更合理,整数传输高效,显示逻辑交给终端处理:

String tmpString = '05:34';
// 拆分小时和分钟
List<String> timeParts = tmpString.split(':');
int hour = int.parse(timeParts[0]);
int minute = int.parse(timeParts[1]);
// 计算成四位对应的整数(5*100+34=534)
int timeInt = hour * 100 + minute;

终端接收到534后,只需用格式化方法补前导零到四位即可,比如:

String displayTime = timeInt.toString().padLeft(4, '0'); // 得到'0534'

方案2:若终端必须接收四位数字对应的整数

如果终端要求接收对应四位数字的数值,你可以先处理成四位字符串再转整数——但注意转成整数后依然是534,核心还是要靠终端侧的格式化逻辑:

String tmpString = '05:34';
String digitString = tmpString.replaceAll(RegExp(r'[^0-9]'), ''); // 得到'0534'
int timeInt = int.parse(digitString); // 结果还是534

关键说明

你原来的代码得到534是正常现象,因为int.parse会自动忽略字符串的前导零,这是整数类型的固有特性,无法通过修改int.parse的方式让整数保留前导零。正确的思路是将数值传输和显示格式分离,让终端负责补零显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:40:34