将字符串日期转换为Java Date对象

时间:2011-08-12 01:32:54

标签: java datetime date-difference

  

可能重复:
  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对象,以便我可以计算两个日期之间的差异?

3 个答案:

答案 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(或其他一些格式化机制)来显示一个正确的值。通用方式。

相关问题