首页 > 解决方案 > 以小时为单位颤动两倍于时间

问题描述

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

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

标签: flutterdart

解决方案


这应该这样做

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


推荐阅读