【发布时间】:2018-07-06 15:44:05
【问题描述】:
【问题讨论】:
-
请在问题中包含您的代码而不是图片。
-
我没有计算代码,因为我不知道从哪里开始......
-
您应该发布示例代码以进行代码审查 - 避免询问解决方案。
标签: java time timedelta calculation
【问题讨论】:
标签: java time timedelta calculation
使用java.time 中的Duration 类来表示您的工作时间。让Duration.between() 为您进行计算,适当时将两个LocalTime 或两个ZonedDateTime 对象传递给它。如果这种转换发生在工作时间,后者会将夏令时 (DST) 的转换纳入计算。
如果输入的时间例如为1530 或3:30pm,则定义一个DateTimeFormatter 以将其解析为LocalTime。
Duration对象可以使用其plus方法求和,因此可以计算每小时和每月的工作时间等等。
要将工作时间格式化为例如8.5(8小时30分钟),请使用toMinutes方法,然后在除以60之前转换为double(我将常量60声明为@987654336 @)。
java.time 是现代 Java 日期和时间 API。它在近 4 年前问世,用于替换上一千年最后几年 Java 1.0 和 1.1 中过时且设计不佳的日期和时间类。
【讨论】:
按照Ole V.V. 的建议使用java.time:
String time1 = "07:00:00";
String time2 = "15:30:12";
LocalTime t1 = LocalTime.parse(time1);
LocalTime t2 = LocalTime.parse(time2);
Duration diff = Duration.between(t1, t2);
System.out.println(diff.toString());
打印:
PT8H30M12S
【讨论】:
java.util.Date 是旧版。
SimpleDateFormat类。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。更不用说它的LocalTime,它比过时的Date更符合需求。
LocalTime 无法解决夏令时 (DST) 等异常情况。