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

Flutter中如何实现小时加减运算?处理带小数的小时表达式

Flutter实现自定义小时格式的加减计算

你的需求核心是不要直接对1.30这类浮点数做加减——因为这里的1.30代表1小时30分钟,而非数学意义上的1.3。正确的做法是先将这种格式转换为分钟数或Duration对象,计算后再转回目标格式。

方法一:基于分钟数转换

这种方式简单直接,适合只处理小时和分钟的场景:

1. 转换函数实现

// 将X.YY格式的小时转为总分钟数
int hourFormatToMinutes(double hourValue) {
  final int hours = hourValue.toInt();
  final int minutes = ((hourValue - hours) * 100).round();
  return hours * 60 + minutes;
}

// 将总分钟数转回X.YY格式的小时
double minutesToHourFormat(int totalMinutes) {
  final int hours = totalMinutes ~/ 60;
  final int minutes = totalMinutes % 60;
  return hours + minutes / 100;
}

2. 使用示例

void calculateHours() {
  final double inputA = 1.30;
  final double inputB = 0.30;

  final int totalMinutes = hourFormatToMinutes(inputA) + hourFormatToMinutes(inputB);
  final double result = minutesToHourFormat(totalMinutes);

  print(result); // 输出 2.00,若需要显示为2可自行处理小数位
}

方法二:使用Flutter内置的Duration类

Duration是Flutter专门处理时间间隔的类,扩展性更强(支持秒、天等单位):

1. 转换与计算实现

// 将X.YY格式的小时转为Duration
Duration hourFormatToDuration(double hourValue) {
  final int hours = hourValue.toInt();
  final int minutes = ((hourValue - hours) * 100).round();
  return Duration(hours: hours, minutes: minutes);
}

// 将Duration转回X.YY格式的小时
double durationToHourFormat(Duration duration) {
  return duration.inHours + (duration.inMinutes % 60) / 100;
}

2. 使用示例

void calculateWithDuration() {
  final double inputA = 1.30;
  final double inputB = 0.30;

  final Duration totalDuration = hourFormatToDuration(inputA) + hourFormatToDuration(inputB);
  final double result = durationToHourFormat(totalDuration);

  print(result); // 输出 2.00
}

注意事项

  • 如果你的输入是字符串(比如"1.30"),需要先转为double再处理;
  • 若分钟数超过60(比如输入0.70),两种方法都会自动转换为正确的小时格式(0.70转为70分钟,即1.10)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:57:19