如何获取TimeOfDay的精确字符串格式值?
如何获取TimeOfDay的精确字符串格式值?
看起来你已经成功把字符串解析成TimeOfDay对象了,现在就差最后一步——把这个对象转成你想要的HH:mm格式字符串对吧?
默认情况下,TimeOfDay的toString()方法会返回TimeOfDay(HH:mm)这种带类名的格式,所以我们需要自己处理小时和分钟的格式化,补零后拼接成目标字符串。这里给你两种实用的方案:
方案一:写一个单独的格式化函数
直接封装一个函数,接收TimeOfDay对象,返回格式化后的字符串:String formatTimeOfDay(TimeOfDay time) { // 用padLeft给小时、分钟补零,确保始终是两位数字 String hour = time.hour.toString().padLeft(2, '0'); String minute = time.minute.toString().padLeft(2, '0'); return '$hour:$minute'; }用法也很简单,在你解析完TimeOfDay之后调用这个函数就行:
TimeOfDay myTime = parseTimeOfDay("04:45"); String result = formatTimeOfDay(myTime); print(result); // 输出 04:45方案二:给TimeOfDay加扩展方法(更优雅)
用Dart的扩展功能,让TimeOfDay对象自己就能调用格式化方法,代码会更简洁直观:extension TimeOfDayFormatter on TimeOfDay { String toHHMMString() { String hourStr = hour.toString().padLeft(2, '0'); String minuteStr = minute.toString().padLeft(2, '0'); return '$hourStr:$minuteStr'; } }之后你可以直接这样用:
TimeOfDay myTime = parseTimeOfDay("04:45"); print(myTime.toHHMMString()); // 输出 04:45
这里要特别提一下padLeft(2, '0')的作用:比如如果时间是9点5分,不加补零的话会得到9:5,而补零后就能得到符合你需求的09:05,完美匹配HH:mm的两位数字格式要求。
备注:内容来源于stack exchange,提问作者Sulaiman Fazli




