颤动时间增加一倍

时间:2019-06-27 10:47:15

标签: flutter dart

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

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

1 个答案:

答案 0 :(得分:0)

这应该做

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