You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取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

火山引擎 最新活动