我正在尝试将 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');
}