【发布时间】:2018-04-03 06:29:35
【问题描述】:
String time1 = br.readLine();
DateFormat sdf = new SimpleDateFormat("hh:mm:ss",Locale.ENGLISH);
Date d1 = sdf.parse(time1);
int n = Integer.parseInt(br.readLine());
for(int i=0;i<n;i++) {
String time2 = br.readLine();
Date d2 = sdf.parse(time2);
long diffMs = d1.getTime() - d2.getTime();
System.out.println(diffMs/(1000*60*60));
输入:
time1 = 23:05:38
time2 = 12:36:07
输出应该是 10,但它给出的是 22。
【问题讨论】:
-
hh是 12 小时格式,HH是 24 小时格式。我怀疑这是你的问题。 -
顺便说一句,使用 LocalTime 和 Duration 会容易得多。
-
@Deb,我认为这不仅仅是一个旁注,它是问题的合理解决方案。现代类通常不会让您使用
hh而不是HH进行解析,因此会首先防止问题出现。我认为这比事后解决要好得多。 -
现在你不应该再使用
Date了。而是使用包java.time内的 Java 的新日期/时间 API。
标签: java date timedelta localtime