import java.text.SimpleDateFormat; import java.text.ParseException; import java.util.*; public class example11 { public static void main(String args[]) throws ParseException { Scanner sc=new Scanner(System.in); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm"); int n=sc.nextInt(); while(n-->0) { String s1=sc.next()+" "+sc.next(); String s2=sc.next()+" "+sc.next(); Date date1 = sdf.parse(s1); Date date2 = sdf.parse(s2); long d2=date2.getTime()/1000/60/60/24; long d1=date1.getTime()/1000/60/60/24; if(d2>d1) System.out.println(d2-d1); else System.out.println(d1-d2); } } }这个代码在日期计算问题 在信息系统开发中,日期的计算成为常态,利用Java程序设计解决日期相关问题变得简单,给你的问题是计算两个日期(非时间上)相隔的天数。 输入: 标准输入,输入的第一行为一个正整数N,表示需要你计算的问题数目,接下来的N行,每行有两个表示日期和时间格式的数据,两数据之间有一个空格,并且前一个日期在后一个日期的前面。 输出: 标准输出,输出两日期(非时间)之间相处的天数,每个计算结果使用一行输出,并按照输入顺序依次输出该问题的结果。 测试用例输入: 4 2021-05-31 00:00 2021-06-01 00:01 2017-01-10 08:00 2017-01-10 09:00 2014-01-05 08:30 2014-01-14 08:00 2014-03-05 16:35 2014-07-03 08:00 测试用例输出: 1 0 9 120为什么错误
时间: 2024-03-10 11:47:31 浏览: 21
这段代码的问题在于 SimpleDateFormat 中的时间格式应该是 "yyyy-MM-dd HH:mm" 而不是 "yyyy-MM-dd hh:mm"。其中,HH 表示 24 小时制,hh 表示 12 小时制。
另外,如果输入的时间格式不符合要求,比如说输入的时间格式不是 "yyyy-MM-dd HH:mm",那么程序将会抛出 ParseException 异常,需要进行异常处理。
下面是修改后的代码:
```java
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Scanner;
import java.util.Date;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
int n = sc.nextInt();
while (n-- > 0) {
try {
String s1 = sc.next() + " " + sc.next();
String s2 = sc.next() + " " + sc.next();
Date date1 = sdf.parse(s1);
Date date2 = sdf.parse(s2);
long d2 = date2.getTime() / 1000 / 60 / 60 / 24;
long d1 = date1.getTime() / 1000 / 60 / 60 / 24;
if (d2 > d1)
System.out.println(d2 - d1);
else
System.out.println(d1 - d2);
} catch (ParseException e) {
System.out.println("日期格式错误!");
}
}
}
}
```
这段代码首先读入需要计算的问题数目 `n`,然后使用 while 循环来逐个解决每个问题。每个问题包含两个日期和时间,我们使用 `next` 函数来读取,并将其拼接成一个字符串 `s1` 和 `s2`。然后使用 SimpleDateFormat 来解析日期字符串,并将其转换成 Date 对象。最后,我们可以使用 getTime 函数来获得两个日期之间的毫秒数,然后将其除以 1000 * 60 * 60 * 24,就可以得到相隔的天数了。如果输入的时间格式不符合要求,程序将会抛出 ParseException 异常并输出错误信息。