将String转换为日期以计算差异

时间:2012-12-05 21:15:18

标签: java string date

我有2个String格式的日期(例如2012-04-23,2012-03-08),我想找到它们之间的区别。

在Java中计算它的最佳方法是什么?

我只关心日期而不是时间

5 个答案:

答案 0 :(得分:3)

您可以使用以下方法将字符串转换为日期:

String dateString = "2012-04-23";
Date date = new SimpleDateFormat("yyyy-mm-dd").parse(dateString);

您可以进一步了解SimpleDateFormat here


至于两个日期之间的差异,你可以用毫秒计算它:

int milliseconds = dateOne.getTime() - dateTwo.getTime();

getTime()返回自1970年1月1日以来的毫秒数。

要在几天内转换它,请使用:

int days = milliseconds / (1000 * 60 * 60 * 24)

答案 1 :(得分:2)

如果您愿意在项目中添加第三方jar,请查看jodatime

  

DateTimeFormatter formatter = DateTimeFormat.forPattern(“dd / MM / yyyy HH:mm:ss”);

     

DateTime dt = formatter.parseDateTime(your-string);

  • 找出它们之间的区别 - interval
  

间隔间隔=新间隔(time1,time2);

您也可能想要检查间隔和持续时间之间的差异,这些是jodatime lib中的概念

答案 2 :(得分:1)

使用SimpleDateFormat将字符串转换为Date对象,并使用Date上的getTime()方法获取等效时间(以毫秒为单位)。取两毫秒值之间的差异。

答案 3 :(得分:0)

检查SimpleDateFormat,它有一个解析功能。

答案 4 :(得分:0)

您可能需要DateFormat,日期和日历组合如下:

    DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = dFormat.parse("2012-04-23");
    Date date2 = dFormat.parse("2012-03-08");
    long timeDifInMillis = date1.getTime() - date2.getTime();

    Date dateDiff = new Date(timeDifInMillis);
    Calendar diffCal = Calendar.getInstance();
    diffCal.setTime(dateDiff);
    System.out.println("Days="+diffCal.get(Calendar.DAY_OF_MONTH));
    System.out.println("Months="+diffCal.get(Calendar.MONTH));
    System.out.println("Years="+(diffCal.get(Calendar.YEAR)-1970));