早于一个月前的日期

Mic*_*ber 11 java date

如何检查给定日期是否早于一个月前?什么是最快的算法?我必须考虑到不同的月份有不同的天数.

Osc*_*Ryz 24

已更新至Java 8

可以使用类LocalDate类:

LocalDate aDate = LocalDate.parse("2017-01-01");
return aDate.isBefore( LocalDate.now().minusMonths(1));
Run Code Online (Sandbox Code Playgroud)

对于以前的版本,Calendar类可以工作.

Calendar calendar = Calendar.getInstance();
calendar.add( Calendar.MONTH ,  -1 );
return aDate.compareTo( calendar.getTime() ) < 0;
Run Code Online (Sandbox Code Playgroud)

示例代码:

import static java.lang.System.out;
import java.time.LocalDate;

public class Sample {
    public static void main( String [] args ) {
        LocalDate aMonthAgo = LocalDate.now().minusMonths(1);
        out.println( LocalDate.parse("2009-12-16").isBefore(aMonthAgo));
        out.println( LocalDate.now().isBefore(aMonthAgo));
        out.println( LocalDate.parse("2017-12-24").isBefore(aMonthAgo));
    }
}
Run Code Online (Sandbox Code Playgroud)

打印

true
false
false
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,麻烦的旧日期时间类,如[`java.util.Date`](https://docs.oracle.com/javase/8/docs/api/java/util/Date.html),[` java.util.Calendar`](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html)和`java.text.SimpleTextFormat`现在是[遗留](https) ://en.wikipedia.org/wiki/Legacy_system),由[java.time]取代(https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html )课程.请参阅[Oracle教程](https://docs.oracle.com/javase/tutorial/datetime/TOC.html). (3认同)