在 Kotlin 中解析持续时间字符串

Nhg*_*yer 6 parsing android duration kotlin

我正在开发一个 Android 应用程序,我需要解析这种形式的持续时间字符串“00:00:00.000”(例如:“00:00:38.47”或“00:03:27.11”)。

我的最终目标是将此字符串转换为总秒数的两倍,以毫秒为单位,以获得进度百分比。

我已经研究过 SimpleDateFormatter,但我在理解它是如何工作的或我应该如何使用它时遇到了一些问题。

我试过这个:

val timeString = "00:01:08.83"
val df = SimpleDateFormat("HH:mm:ss.SS")
df.parse(timeString)?.seconds!!.toFloat() // Returns 8.00, I want to have 68.83 for this example string
Run Code Online (Sandbox Code Playgroud)

那么有没有一种简单/有效的方法来做到这一点?

Lac*_*lev 5

  val time = LocalTime.parse("00:01:08.83", DateTimeFormatter.ofPattern("HH:mm:ss.SS"))

  println(time.toSecondOfDay())
  println(time.toNanoOfDay())
  println(time.toNanoOfDay().toFloat() / 1_000_000_000)
Run Code Online (Sandbox Code Playgroud)

输出:

68
68830000000
68.83
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这仅在小时数小于 24 时有效。 (4认同)