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

