java中两次之间小时的正确格式

java中两次之间小时的正确格式,java,datetime,netbeans,time,jodatime,Java,Datetime,Netbeans,Time,Jodatime,我试图在java中计算两次之间的小时数。我正在使用joda时间库来格式化它。程序可以提取文本框中输入的时间,并将其放入localTime变量中: LocalTime startTime1; LocalTime airTime1; LocalTime foamTime1; LocalTime scTime1; 然后,“开始”按钮执行以下操作 DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm"); startTime1 =

我试图在java中计算两次之间的小时数。我正在使用joda时间库来格式化它。程序可以提取文本框中输入的时间,并将其放入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();
最后,我出现了一个错误,分钟数无法转换为字符串。我需要使用什么样的变量类型才能使其工作


谢谢

您遇到的基本问题是,持续时间是一个与实际日期时间不同的概念。台词

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();

你想在remaining1中存储什么?从播放时间1到开始时间1之间的持续时间我们可以在聊天室中进一步讨论这个问题。恐怕我只有20分钟才能在聊天室中键入。哈哈,谢谢。我想更新需要一段时间,因为它仍然显示错误