这个问题以前可能有人回答过。但我来了。我有一个值为“21:48”的字符串对象和另一个值为“23:23”的字符串对象。如何计算这两次之间的毫秒数?
5ktev3wc1#
使用java时间,您可以通过创建 Duration 对象。
Duration
Duration duration = // TODO long millis = duration.toMillis();
你确实说了 21:48 以及 23:23 作为 String 输入值。你可以用 LocalTime 类来表示小时、分钟和秒的概念。
21:48
23:23
String
LocalTime
LocalTime lt1 = LocalTime.parse("21:48"); LocalTime lt2 = LocalTime.parse("23:23"); Duration ldd = Duration.between(lt1, lt2); long millis = duration.toMillis(); // 5700000
请注意,这个 Duration 只与 LocalTime . 如果你想测量毫秒的实际数量,你必须考虑时区可能采用夏令时。
// in Germany, for example, at 2020-10-25 on 03:00 clocks are turned backward 1 hour ZoneId berlin = ZoneId.of("Europe/Berlin"); LocalDateTime ldt1 = LocalDateTime.of(LocalDate.parse("2020-10-24"), lt1); LocalDateTime ldt2 = LocalDateTime.of(LocalDate.parse("2020-10-25"), lt2); ZonedDateTime zdt1 = ZonedDateTime.of(ldt1, berlin); ZonedDateTime zdt2 = ZonedDateTime.of(ldt2, berlin); // does not consider DST (one hour is missing) Duration d1 = Duration.between(ldt1, ldt2); long ms1 = d1.toMillis(); // 92100000 // does consider DST (extra hour applied) Duration d2 = Duration.between(zdt1, zdt2); long ms2 = d2.toMillis(); // 95700000
cunj1qz12#
您可以使用现代日期时间api来完成此操作,如下所示:
import java.time.LocalTime; import java.time.temporal.ChronoUnit; public class Main { public static void main(String[] args) { long millis = LocalTime.parse("21:48").until(LocalTime.parse("23:23"), ChronoUnit.MILLIS); System.out.println(millis); } }
输出:
5700000
在trail:date-time了解有关现代日期时间api的更多信息。
piok6c0g3#
使用joda时间:
DateTime zero = new DateTime(time); long millis = new org.joda.time.Period(DateTime.now()).toDurationFrom(zero).getMillis();
3条答案
按热度按时间5ktev3wc1#
使用java时间,您可以通过创建
Duration
对象。你确实说了
21:48
以及23:23
作为String
输入值。你可以用LocalTime
类来表示小时、分钟和秒的概念。请注意,这个
Duration
只与LocalTime
. 如果你想测量毫秒的实际数量,你必须考虑时区可能采用夏令时。cunj1qz12#
您可以使用现代日期时间api来完成此操作,如下所示:
输出:
在trail:date-time了解有关现代日期时间api的更多信息。
piok6c0g3#
使用joda时间: