我正在尝试将 double 值(例如9.5)转换为相应的小时/分钟值(例如9.30)。我也想使用此值执行计算,但要像时间值一样处理它(例如,将23和2相加应得出1,因为小时数应在24小时内回绕)。

我已经尝试将值转换为DateTime,但是显示为“无效的日期格式”。

最佳答案

这应该做

void main() {
  print(getTimeStringFromDouble(9.5)); // 9:30
  print(getTimeStringFromDouble(25.0)); // 1:0
}

String getTimeStringFromDouble(double value) {
  if (value < 0) return 'Invalid Value';
  int flooredValue = value.floor();
  double decimalValue = value - flooredValue;
  String hourValue = getHourString(flooredValue);
  String minuteString = getMinuteString(decimalValue);

  return '$hourValue:$minuteString';
}

String getMinuteString(double decimalValue) {
  return '${(decimalValue * 60).toInt()}'.padLeft(2, '0');
}

String getHourString(int flooredValue) {
  return '${flooredValue % 24}'.padLeft(2, '0');
}

10-08 17:26