1

可能的重复:
计算 Java 中的日期差异
如何计算 Java 中的时间跨度并格式化输出?

假设您获得了两个日期作为字符串,并且它们采用这种格式8/11/11 9:16:36 PM,我将如何将它们转换为 java Date 对象,以便我可以计算两个日期之间的差异?

4

3 回答 3

2

只要两个时间都在 GMT/UTC 中,您就可以date1.getTime() - date2.getTime()将结果除以 86400000 以获得天数。其余的可能非常直观。

编辑——基于编辑的问题

要将字符串转换为日期,请使用SimpleDateFormat类。

String yourDateString = "8/11/11 9:16:36 PM";
SimpleDateFormat format =
            new SimpleDateFormat("MM/dd/yy HH:mm:ss a");
Date yourDate = format.parse(yourDateString);
于 2011-08-12T01:37:30.320 回答
2

大多数 Date 的 getter 已被弃用,取而代之的是 Calendar 方法。这就是你将如何做到的

Date date1, date2; //initialized elsewhere
Calendar day1 = new Calendar();
day1.setTime(date1)

Calendar day2 = new Calendar();
day2.setTime(date2);


int yearDiff, monthDiff, dayDiff, hourDiff, minuteDiff, secondDiff;
yearDiff = Math.abs(day1.get(Calendar.YEAR)-day2.get(Calendar.YEAR));
monthDiff = Math.abs(day1.get(Calendar.MONTH)-day2.get(Calendar.MONTH));
dayDiff = Math.abs(day1.get(Calendar.DAY_OF_YEAR)-day2.get(Calendar.DAY_OF_YEAR));
hourDiff = Math.abs(day1.get(Calendar.HOUR_OF_DAY)-day2.get(Calendar.HOUR_OF_DAY));
minuteDiff = Math.abs(day1.get(Calendar.MINUTE)-day2.get(Calendar.MINUTE));
secondDiff = Math.abs(day1.get(Calendar.SECOND)-day2.get(Calendar.SECOND));

然后你可以用这些数字做任何你喜欢的事情。

于 2011-08-12T01:50:45.533 回答
1

定义一个与您的格式匹配的SimpleDateFormat(java 文档非常简单),然后使用 parse 方法获取正确的 Date 对象,您可以从中轻松计算两个日期之间的差异。一旦有了这种差异,最好的方法可能是“手动”计算天数/小时/分钟/秒数,尽管可能再次使用 SimpleDateFormat(或其他一些格式化机制)来显示正确的值通用方式。

于 2011-08-12T01:51:05.873 回答