Flutter 两倍于时间(以小时为单位)

FN2*_*187 5 dart flutter

我正在尝试将双精度值(例如 9.5)转换为相应的小时/分钟值(例如 9.30)。我还想使用该值执行计算,但将其像时间值一样处理(例如,将 23 和 2 相加应得到 1,因为小时数应以 24 小时为单位)。

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

Aji*_* O. 9

这应该可以做到

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');
}

Run Code Online (Sandbox Code Playgroud)

  • 1. 您可能应该断言 `value &gt;= 0` 以排除负数,2. `getMinuteString()` 应该执行 `padLeft(2, '0')`。 (2认同)