如何计算两个日期之间的差异是否大于20年?

Dam*_*mir 1 java

我有整数代表两个日期的月,日和年.如何计算它们之间的差异是否大于20年?我用它来注册新用户.

Mar*_*ace 5

使用Joda-Time,期间!:)

虽然"超过20年"可能在某种程度上取决于您所谈论的日历,当您开始计算,闰年或夏令时时,Joda-Time将为您提供util.Calendar类的更多灵活性.不建议使用util.Date,计算毫秒(或其他类似的东西)可能会导致错误的代码.

JODA-TIME代码示例:

鉴于:

int year1 = 2012, month1 = 2, day1 = 7;
int year2 = 1987, month2 = 7, day2 = 23;
//You can include a TimeZone if needed in the constructors below
DateTime dateTime1 = new DateTime(year1, month1, day1, 0, 0); //2012-02-07T00:00:00.000-05:00
DateTime dateTime2 = new DateTime(year2, month2, day2, 0, 0); //1987-07-23T00:00:00.000-04:00
Run Code Online (Sandbox Code Playgroud)

选项1,无聊......

DateTime twentyYearsBefore = dateTime1.minusYears(20); //1992-02-07T00:00:00.000-05:00
if(dateTime2.compareTo(twentyYearsBefore) == -1)
    System.out.println("The difference between the dates is greater than 20 years");
Run Code Online (Sandbox Code Playgroud)

选项2,好东西!

Days d = Days.daysBetween(dateTime1, dateTime2);
int days = d.getDays(); //-8965 days
System.out.println("There are " + days + " days between the two dates");
Run Code Online (Sandbox Code Playgroud)

选项3,火箭科学!;)

Period periodDifference = new Period(dateTime1, dateTime2);
System.out.println(periodDifference); //prints: P-24Y-6M-2W-1D
Run Code Online (Sandbox Code Playgroud)

当然,Period类有很多方法只能获取相关字段.单击以下以获取DateTimeDays的API