gpt4 book ai didi

java - 如何比较日期并给出它们之间的差异?

转载 作者:行者123 更新时间:2023-12-01 18:39:28 25 4
gpt4 key购买 nike

我发现了一个非常有用的库,它是 SimpleDateFormat用于日期格式。这不是问题所在。 compareTo方法满足我比较日期的目的,但我的问题是 compareTo没有显示出那时的区别

例如下面的代码:

    String date1 = "Apr 2010";
String date2 = "Jan 2009";

SimpleDateFormat format = new SimpleDateFormat("MMM yy");

Date d1 = null;
Date d2 = null;
d1 = format.parse(date1);
d2 = format.parse(date2);

int test1 = d1.compareTo(d2);
System.out.println(test1);

上面的输出给了我 -9 。请问方法compareTo是怎么做的计算出来了吗?

我想要的是找到这些月份和年份之间的差异。非常感谢。

最佳答案

compareTo 方法继承自 Comparable。它的 javadoc 指出

Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

这就是您从 compareTo 中得到的全部内容。只是哪个更大/更小/相等。

如果您想比较日期字段,您需要自己完成。或者使用第三方库,例如 Joda Time。例如

String date1 = "Apr 2010";
String date2 = "Jan 2009";

DateTimeFormatter formatter = DateTimeFormat.forPattern("MMM yyyy");

DateTime d1 = formatter.parseDateTime(date1);
DateTime d2 = formatter.parseDateTime(date2);

Months monthsBetween = Months.monthsBetween(d1, d2);
System.out.println("Months diff: " + monthsBetween.get(DurationFieldType.months()));
Years yearsBetween = Years.yearsBetween(d1, d2);
System.out.println("Years diff: " + yearsBetween.get(DurationFieldType.years()));

打印

Months diff: -15
Years diff: -1

关于java - 如何比较日期并给出它们之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20533637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com