早上 7 点到下午 3:30 之间的锻炼时间 - JAVA [关闭]

Posted

技术标签:

【中文标题】早上 7 点到下午 3:30 之间的锻炼时间 - JAVA [关闭]【英文标题】:Working out time between 7am to 3:30pm - JAVA [closed] 【发布时间】:2018-07-06 15:44:05 【问题描述】:

我创建了这个程序来计算 startWork 和 finishWork 之间的时间 但我似乎无法弄清楚如何计算时间...... 这是我的界面。

只是想知道一种计算方法。

谢谢

【问题讨论】:

看到这个:***.com/questions/18686575/… 请在问题中包含您的代码而不是图片。 我没有计算代码,因为我不知道从哪里开始...... Java 8: Calculate difference between two LocalDateTime的可能重复 您应该发布示例代码以进行代码审查 - 避免询问解决方案。 【参考方案1】:

使用java.time 中的Duration 类来表示您的工作时间。让Duration.between() 为您进行计算,适当时将两个LocalTime 或两个ZonedDateTime 对象传递给它。如果这种转换发生在工作时间,后者会将夏令时 (DST) 的转换纳入计算。

如果输入的时间例如为15303:30pm,则定义一个DateTimeFormatter 以将其解析为LocalTime

Duration对象可以使用其plus方法求和,因此可以计算每小时和每月的工作时间等等。

要将工作时间格式化为例如8.5(8小时30分钟),请使用toMinutes方法,然后在除以60之前转换为double(我将常量60声明为@987654336 @)。

java.time

java.time 是现代 Java 日期和时间 API。它在近 4 年前问世,用于替换上一千年最后几年 Java 1.0 和 1.1 中过时且设计不佳的日期和时间类。

链接: Oracle Tutorial trail Date Time

【讨论】:

【参考方案2】:

按照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

【讨论】:

因此,使用从 07:00:00 到 15:00:00 的代码,它会打印 8,这是正确的 如果我将其更改为 07:00:00 到 15:30:00,它会打印 8不正确 我将如何将输出更改为打印 8.5? 请注意java.util.Date 是旧版。 请不要教年轻人使用早已过时且臭名昭著的SimpleDateFormat类。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。更不用说它的LocalTime,它比过时的Date更符合需求。 @OleV.V.谢谢我已经更新了答案.. 使用 LocalTime 无法解决夏令时 (DST) 等异常情况。

以上是关于早上 7 点到下午 3:30 之间的锻炼时间 - JAVA [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

电脑设置了每天下午五点自动关机,第二天早上电脑为啥还是开着的?

如何编写程序根据 sys 时间打印愿望?

如何在每天早上 8 点到晚上 8 点之间设置本地通知

从时间戳列表中获取上午 8 点到下午 5 点之间的时间戳

查询同一班次内的数据个数

在 SQL 中搜索两次之间的变量