我正在使用Stopwatch Timer插件(https://pub.dev/packages/stop_watch_timer)这个插件以"字符串"的形式给我经过的时间。所以我的文本看起来像:
00:00:03.45 // hours:minutes:seconds.milliseconds
现在我需要使用这些时间信息来计算游戏中的分数。你知道我如何把这个字符串转换成毫秒int,这样我就可以用它来做数学计算了吗?
我的逻辑是用另一个值乘以所花费的时间来确定分数。用户花费的时间越多,分数就越高(差(。
感谢您的帮助。感谢
我会使用这样的DateFormat:
final timeStr = '00:00:03.45';
final format = DateFormat('HH:mm:ss.S');
final dt = format.parse(timeStr, true);
print(dt.millisecondsSinceEpoch);
将打印:
3045
注意:将需要导入intl包:
import 'package:intl/intl.dart';
您可以使用Duration()
并获得这样的毫秒数。
我使用时间作为10:12:23.24
,分割每个项目,得到小时、分钟、秒、毫秒。
void main() {
String test = "10:12:23.24";
String hr = test.split(":")[0];
// print(hr);
String minutes = test.split(":")[1];
// print(minutes);
String seconds = test.split(":")[2].split(".")[0];
// print(seconds);
String milliseconds = test.split(":")[2].split(".")[1];
// print(milliseconds);
Duration duration = Duration(
hours: int.tryParse(hr) ?? 0,
minutes: int.tryParse(minutes) ?? 0,
seconds: int.tryParse(seconds) ?? 0,
milliseconds: int.tryParse(milliseconds) ?? 0);
print(duration.inMilliseconds);
}
输出将以毫秒为单位:36743024
<-输出
你可以在这里试试
使用Duration
的手动但功能性的解决方案类似于
Duration getDuration(String elapsed) {
List<String> splits = elapsed.split(':');
List<String> minSplits = splits[2].split('.');
int hours = int.parse(splits[0]);
int minutes = int.parse(splits[1]);
int seconds = int.parse(minSplits[0]);
// pad with 0s to make sure 45 -> 450
int millis = int.parse(minSplits[1].padRight(3, '0'));
// create a duration object for ease of calculation/access
Duration duration = Duration(
hours: hours,
minutes: minutes,
seconds: seconds,
milliseconds: millis,
);
return duration;
}
String elapsed = '00:00:03.45';
Duration duration = getDuration(elapsed);
print(duration.inMilliseconds);