如何将时间戳字符串转换为毫秒整数



我正在使用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);

最新更新