0

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

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

我只关心日期而不是时间

4

5 回答 5

3

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

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

您可以在此处进一步了解 SimpleDateFormat 。


至于两个日期之间的差异,您可以使用以下方法以毫秒为单位进行计算:

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

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

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

int days = milliseconds / (1000 * 60 * 60 * 24)
于 2012-12-05T21:18:23.190 回答
2

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

DateTimeFormatter 格式化程序 = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");

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

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

间隔区间 = new Interval(time1, time2);

您可能还想检查间隔和持续时间之间的区别,它们是 jodatime lib 中的概念

于 2012-12-05T21:25:10.573 回答
1

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

于 2012-12-05T21:17:56.450 回答
0

您可能希望 DateFormat、Date 和 Calendar 组合如下:

    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));
于 2012-12-05T21:28:39.227 回答
0

检查SimpleDateFormat,它具有解析功能。

于 2012-12-05T21:20:49.567 回答