可能重复:
Calculating difference in dates in Java
How can I calculate a time span in Java and format the output?字符串转换日期为Java Date对象
说你给两个日期作为字符串,它们都是这种格式8/11/11 9:16:36 PM
我怎么会去关于将它们转换为java日期对象,以便我可以计算两个日期之间的差异?
可能重复:
Calculating difference in dates in Java
How can I calculate a time span in Java and format the output?字符串转换日期为Java Date对象
说你给两个日期作为字符串,它们都是这种格式8/11/11 9:16:36 PM
我怎么会去关于将它们转换为java日期对象,以便我可以计算两个日期之间的差异?
只要这两个时间都是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);
大多数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));
然后,你可以做任何你喜欢的数字。
非常感谢。是的,我注意到很多日期方法已被弃用。我最终在这里使用你的方法,它使事情变得非常简单,我感谢你的帮助! +1 – DRiFTy
定义与您的格式相匹配的SimpleDateFormat(java doc非常直接),然后使用parse方法获取适当的Date对象,从中可以轻松计算两个日期之间的差异。 一旦你有这种差异,最好的可能是“手动”计算天数/小时/分钟/秒的数量,尽管可能再次使用SimpleDateFormat(或其他格式化机制)来显示适当的值一种通用的方式。
非常感谢你的工作! – DRiFTy