可能重复:
Calculating difference in dates in Java
How can I calculate a time span in Java and format the output?
假设您有两个日期作为字符串,并且它们采用这种格式8/11/11 9:16:36 PM
我将如何将它们转换为Java Date对象,以便我可以计算两个日期之间的差异?
答案 0 :(得分: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);
答案 1 :(得分: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));
然后你可以用这些数字做任何你喜欢的事情。
答案 2 :(得分:1)
定义与您的格式匹配的SimpleDateFormat(java doc非常简单),然后使用parse方法获取正确的Date对象,从中可以轻松计算两个日期之间的差异。 一旦你有这个差异,最好的可能是“手动”计算天数/小时/分钟/秒,虽然有可能再次使用SimpleDateFormat(或其他一些格式化机制)来显示一个正确的值。通用方式。