Java中计算两个时间之间的小时数的正确格式

4

我正在尝试在Java中计算两个时间之间的小时数。我使用joda time库进行格式化。该程序可以从文本框中提取输入的时间并将其放入localTime变量中:

LocalTime startTime1;
LocalTime airTime1;
LocalTime foamTime1;
LocalTime scTime1;

一个开始按钮将执行以下操作:
DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
startTime1 = formatter.parseLocalTime(startField2.getText());
airTime1 = formatter.parseLocalTime(airField.getText());
foamTime1 = formatter.parseLocalTime(fTimeField2.getText());
scTime1 = formatter.parseLocalTime(remainingField2.getText());

我想计算airTime1和startTime1之间的时间,尝试使用以下方法:

DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
Minutes difference = ((Minutes.minutesBetween(airTime1,startTime1)));
LocalTime remaining1 = formatter.parseLocalTime(difference);

然后,剩余1应该保存在airTime1和startTime1之间的时间持续值。 然后将剩余时间写入图像。

Graphics g = image2.getGraphics();
g.setFont(g.getFont().deriveFont(30f));
g.drawString((String.valueOf(remaining1)), 100, 100);
g.dispose();

我遇到了一个错误,说分钟不能转换为字符串。为使其正常工作,我需要使用哪种变量类型?

谢谢。


你试图在remaining1中存储什么? - sebenalern
airTime1和startTime1之间的时间持续时间 - Will
我们可以在聊天中进一步讨论 https://chat.stackoverflow.com/rooms/110302/correct-format-for-hours-between-two-times-in-java[链接] - sebenalern
很抱歉,在我获得20个声望之前,我无法在聊天室中输入文字。 - Will
哈哈,谢谢。我猜更新可能需要一些时间,因为它仍然显示错误。 - Will
显示剩余3条评论
1个回答

0
你遇到的根本问题在于时间段是一个与实际日期时间概念不同的概念。这几行代码……
Minutes difference = ((Minutes.minutesBetween(airTime1,startTime1)));
LocalTime remaining1 = formatter.parseLocalTime(difference);

不合理,因为将持续时间转换为日期时间的想法是没有意义的。例如,“3分钟”代表什么日期时间?我能想到的最接近的东西是一对日期时间,一个用于开始,一个用于结束,但这就是你已经拥有的。

分钟表示(或可能是小时表示,根据您所述的用例)实际上就是您想要的,我认为您只是过度思考了。无需进一步转换,只需使用它来构建您想要的字符串即可:

// Get difference, same as before
Minutes difference = ((Minutes.minutesBetween(airTime1,startTime1)));
// Create string representation of difference 
// (Minutes.toString() representation exists but is hard to read)
String diffStr = difference.getMinutes() / 60.0 + " hours" // for, e.g., "3.5 hours"

// Re-use your old graphics code with new string
Graphics g = image2.getGraphics();
g.setFont(g.getFont().deriveFont(30f));
g.drawString(diffStr, 100, 100);
g.dispose();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接