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

时间:2021-06-02 07:20:59

标签: flutter dart

我正在使用秒表计时器插件 (https://pub.dev/packages/stop_watch_timer) 这个插件给了我一个“字符串”的时间。 所以我的文字看起来像:

00:00:03.45 // hours:minutes:seconds.milliseconds

现在我需要使用这个时间信息来计算游戏中的分数。 你知道如何将这个字符串转换为毫秒整数以便我可以用它进行数学计算吗?

我的逻辑是乘以另一个值所花费的时间来确定分数。用户花费的时间越多,得分越高(差)。

感谢任何帮助。 谢谢

3 个答案:

答案 0 :(得分:4)

我会像这样使用 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';

答案 1 :(得分:1)

您可以使用 Duration() 并获得这样的毫秒数。

我将时间用作 10:12:23.24 并拆分每个项目并获得 hr、min、sec、millisec。

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 <- 输出

你可以试试here

答案 2 :(得分:0)

一个相当手动但实用的解决方案,使用 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);
相关问题