gpt4 book ai didi

java - 如何在 Java 中将 String 时间转换为 Long 毫秒

转载 作者:行者123 更新时间:2023-12-04 14:54:19 24 4
gpt4 key购买 nike

我正在尝试使用以下代码将时间字符串转换为毫秒。因为我会将时间用作倒数计时器。

问题是时间来自数据库,而且是 varchar 类型。我试过这段代码,但它没有给我正确的输出。

String timeDuration = "10:00"; //for example only
SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
Date time = sdf.parse(timeDuration);
long millis = time.getTime(); //The output must be 600000

我在使用这段代码时得到了错误的“millis”。

我正在使用 Android Studio。

最佳答案

持续时间与日期时间不同

Duration 与 Date-Time 不同,因此您不应将字符串解析为 Date-Time 类型。日期时间类型(例如 java.util.Date)表示时间点,而持续时间表示时间长度。您可以从以下示例中理解它:

  1. 我已经阅读这本书 10 分钟了。
  2. 下午 4:00 开始读这本书。

第一个示例有一个持续时间,而第二个示例有一个日期时间(隐含今天)。

java.time

java.util 日期时间 API 及其格式化 API SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到 modern Date-Time API *.

使用现代日期时间 API java.time 的解决方案:

您可以将字符串转换为 ISO 8601 format for a Duration然后将结果字符串解析为 Duration您可以将其转换为毫秒。

演示:

import java.time.Duration;

public class Main {
public static void main(String[] args) {
System.out.println(durationToMillis("10:00"));
}

static long durationToMillis(String strDuration) {
String[] arr = strDuration.split(":");
Duration duration = Duration.ZERO;
if (arr.length == 2) {
strDuration = "PT" + arr[0] + "M" + arr[1] + "S";
duration = Duration.parse(strDuration);
}
return duration.toMillis();
}
}

输出:

600000

ONLINE DEMO

Trail: Date Time 了解有关现代日期时间 API 的更多信息.

关于java - 如何在 Java 中将 String 时间转换为 Long 毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68396195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com