早上 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) 的转换纳入计算。
如果输入的时间例如为1530
或3: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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章