2011-08-12 42 views

回答

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); 
+0

非常感谢你的工作! – DRiFTy

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)); 

然后,你可以做任何你喜欢的数字。

+0

非常感谢。是的,我注意到很多日期方法已被弃用。我最终在这里使用你的方法,它使事情变得非常简单,我感谢你的帮助! +1 – DRiFTy

1

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