Flutter/Dart: 从双倍(小时)解析持续时间
Flutter/Dart: parse Duration from double (hours)
我有一个双精度值,它是我需要将其转换为持续时间的小时数。假设我有一个像这样的函数原型
Duration parseDurationFromDouble(double d) {
// parse the double
return parsedDuration;
}
和
2.5
因为我的时长是双倍存储的,那么函数应该是return,像这样:
Duration(hours: 2, minutes: 30)
如何在 Dart 中执行此操作?可以直接转换吗?还是应该通过字符串插值来完成?
提前致谢。
Duration(minutes: (hoursDuration * 60).toInt());
正如@MuhammadQasim 指出的那样,您可以通过将原始小时乘以分钟并四舍五入来实现。这有一个问题,如果你关心秒、毫秒或微秒,穆罕默德的解决方案会丢失这些,这就是为什么我认为值得发布频谱的另一端,甚至微秒都不会四舍五入。
Duration parseDurationFromDouble(double hours) {
return Duration(
microseconds: (hours * Duration.microsecondsPerHour).toInt()
);
}
你可以试试这个。手动将值转换为小时。分秒。
void parseDurationFromDouble(double value){
int hours = value.toInt();
int minutes = ((value - hours) * 60).toInt();
int seconds = ((((value - hours) * 60) - minutes) * 60).toInt();
print("$hours:$minutes:$seconds");
Duration(hours: hours, minutes: minutes, seconds: seconds);
}
我有一个双精度值,它是我需要将其转换为持续时间的小时数。假设我有一个像这样的函数原型
Duration parseDurationFromDouble(double d) {
// parse the double
return parsedDuration;
}
和
2.5
因为我的时长是双倍存储的,那么函数应该是return,像这样:
Duration(hours: 2, minutes: 30)
如何在 Dart 中执行此操作?可以直接转换吗?还是应该通过字符串插值来完成?
提前致谢。
Duration(minutes: (hoursDuration * 60).toInt());
正如@MuhammadQasim 指出的那样,您可以通过将原始小时乘以分钟并四舍五入来实现。这有一个问题,如果你关心秒、毫秒或微秒,穆罕默德的解决方案会丢失这些,这就是为什么我认为值得发布频谱的另一端,甚至微秒都不会四舍五入。
Duration parseDurationFromDouble(double hours) {
return Duration(
microseconds: (hours * Duration.microsecondsPerHour).toInt()
);
}
你可以试试这个。手动将值转换为小时。分秒。
void parseDurationFromDouble(double value){
int hours = value.toInt();
int minutes = ((value - hours) * 60).toInt();
int seconds = ((((value - hours) * 60) - minutes) * 60).toInt();
print("$hours:$minutes:$seconds");
Duration(hours: hours, minutes: minutes, seconds: seconds);
}