如何使用Java以24小时格式计算两次之间的差异?我正在从文件中加载时间。时间保存为int
s,例如:19 45 06 34(前两位代表第一次;后两位代表第二次)。如何计算它们之间的差异并以??h ??m
格式打印?例如,上面的时间应显示10h 49m。
好的......我真的是初学者,这是一项任务,我知道它没用。假设我的文件中保存了这样的内容:
“SO35 13 56 05 26” - (首先是代码,两次代码)
我甚至不知道如何从文件加载它然后计算它。该代码用于获取计算的时间。在文件内部,有24行类似于我放在这里的行。
答案 0 :(得分:7)
DateTimeFormatter
(理想情况下为LocalTime
)new Period(from, to, PeriodType.minutes().withHours())
答案 1 :(得分:0)
只需初始化两个Date对象,然后输入两次的值。 然后你可以将它转换为毫秒格式并减去它们。
答案 2 :(得分:0)
您应该将它们转换为Date对象,减去日期(它们将等于“Long”毫秒计数),然后将其转换回您想要的格式。
如果你跨越日界,要小心 - 因为你的日期不包括日界,这听起来很无用 - 家庭作业或其他什么?
答案 3 :(得分:0)
这很简单,您可以将两次转换为分钟,减去差异并转换为小时/分钟。
Scanner s
int diff = Math.abs(s.nextInt()*60 + s.nextInt() - s.nextInt()*60 - s.nextInt());
System.out.println(diff / 60 + "h " + diff % 60 + "m");
答案 4 :(得分:0)
我认为这两次都是时不时的?
即第二天下午7:45至6:34之间的差异?
因为那不同于早上6:34到晚上7:45。
(你必须要记住的事情。)
我建议你做的事情(如果你不想使用Joda Time)是使用SimpleDateFormat
类和Calendar
类。
要获得毫秒的确切差异,请使用Date
对象和getTime
方法。然后,你可以用一小时内的毫秒数除以一分钟内的millesecs数。
请参阅:
http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html
http://download.oracle.com/javase/6/docs/api/java/util/Date.html
http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
答案 5 :(得分:0)
您不需要任何库来执行此操作。就像你在纸上一样解决它
HH MM
06 34
- 19 45
--------
10 49
你不能从45减去34,因为34小于45,所以你从小时“借”60分钟。最终得到(60 + 34)-45 = 49,小时数从6减少到5.由于5小于19,我们假设我们已经进入第二天,因此小时数差异为5+ (24-19)= 10。
以下是代码的样子:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
final String filename = "myfile.txt";
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(filename));
String line;
//read the file, line-by-line
while ((line = in.readLine()) != null) {
//break the line into various pieces
Scanner scanner = new Scanner(line);
scanner.next(); //skip the first bit
int hour1 = scanner.nextInt();
int min1 = scanner.nextInt();
int hour2 = scanner.nextInt();
int min2 = scanner.nextInt();
int diffMin;
if (min2 < min1) {
// borrow 60mins from the hours
diffMin = 60 + min2 - min1;
if (hour2 == 0) {
hour2 = 23;
} else {
hour2--;
}
} else {
diffMin = min2 - min1;
}
int diffHour;
if (hour2 < hour1) {
diffHour = hour2 + 24 - hour1;
} else {
diffHour = hour2 - hour1;
}
System.out.printf("%sh %sm\n", diffHour, diffMin);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
}
}
}
}
这段代码可能会被压缩,但我已经将它变得冗长,以便您了解正在发生的事情。