在 Java 中如何比较日期?
在 java 中有多种方法可以比较日期,日期在计算机内部表示为(long型)时间点——自1970年1月1日以来经过的毫秒数。在java中,date是一个对象,包含多个用于比较的方法,任何比较两个日期的方法本质上都会比较日期的时间。
本文主要介绍以下五种方式:
- 使用 date.compareto()
- 使用 date.before()、date.after() 和 date.equals()
- 使用 calender.before()、calender.after() 和 calender.equals()
- 使用 gettime()
- 使用 java 8 的 isbefore()、isafter()、isequal() 和 compareto()
date.compareto()
date 实现了 comparable
输出结果 可以用 equals、after 和 before 方法比较日期。 输出结果 calendar 类也有 compareto、equals、after 和 before 方法,工作方式与上面描述的 date 类的方法相同。因此,如果日期信息保存在 calendar 类中,则不需要提取日期来执行比较。 输出结果 可以直接比较两个日期的时间点。这是对两种原始数据类型的比较,因此可以使用 < 、 > 和 == 来比较。 在比较日期之前,必须使用前面创建的 date 对象中的数据来创建长整型。 输出结果 在 java 8 中,可以使用新的 isbefore()、isafter()、isequal() 以及 compareto() 来比较 localdate、localtime 和 localdatetime。 输出结果 本文主要讲解了在 java 中比较日期的几种常用方法,可以自己实际操作一下。 参考
package com.wupx.date;
import java.text.parseexception;
import java.text.simpledateformat;
import java.util.date;
public class datedemo {
public static void main(string[] args) throws parseexception {
simpledateformat sdf = new simpledateformat("yyyy-mm-dd");
date date1 = sdf.parse("2019-10-01");
date date2 = sdf.parse("2019-10-17");
system.out.println("date1 : " + sdf.format(date1));
system.out.println("date2 : " + sdf.format(date2));
if (date1.compareto(date2) > 0) {
system.out.println("date1 is after date2");
} else if (date1.compareto(date2) < 0) {
system.out.println("date1 is before date2");
} else if (date1.compareto(date2) == 0) {
system.out.println("date1 is equal to date2");
} else {
system.out.println("咋到这的?");
}
}
}
date1 : 2019-10-01
date2 : 2019-10-17
date1 is before date2
date.before() date.after() date.equals()
package com.wupx.date;
import java.text.parseexception;
import java.text.simpledateformat;
import java.util.date;
public class datedemo2 {
public static void main(string[] args) throws parseexception {
simpledateformat sdf = new simpledateformat("yyyy-mm-dd");
date date1 = sdf.parse("2019-10-01");
date date2 = sdf.parse("2019-10-17");
system.out.println("date1 : " + sdf.format(date1));
system.out.println("date2 : " + sdf.format(date2));
if (date1.after(date2)) {
system.out.println("date1 is after date2");
}
if (date1.before(date2)) {
system.out.println("date1 is before date2");
}
if (date1.equals(date2)) {
system.out.println("date1 is equal date2");
}
}
}
date1 : 2019-10-01
date2 : 2019-10-17
date1 is before date2
calender.before() calender.after() calender.equals()
package com.wupx.date;
import java.text.parseexception;
import java.text.simpledateformat;
import java.util.calendar;
import java.util.date;
public class datedemo3 {
public static void main(string[] args) throws parseexception {
simpledateformat sdf = new simpledateformat("yyyy-mm-dd");
date date1 = sdf.parse("2009-12-31");
date date2 = sdf.parse("2010-01-31");
system.out.println("date1 : " + sdf.format(date1));
system.out.println("date2 : " + sdf.format(date2));
calendar cal1 = calendar.getinstance();
calendar cal2 = calendar.getinstance();
cal1.settime(date1);
cal2.settime(date2);
if (cal1.after(cal2)) {
system.out.println("date1 is after date2");
}
if (cal1.before(cal2)) {
system.out.println("date1 is before date2");
}
if (cal1.equals(cal2)) {
system.out.println("date1 is equal date2");
}
}
}
date1 : 2019-10-01
date2 : 2019-10-17
date1 is before date2
gettime()
package com.wupx.date;
import java.text.parseexception;
import java.text.simpledateformat;
import java.util.date;
public class datedemo4 {
public static void main(string[] args) throws parseexception {
simpledateformat sdf = new simpledateformat("yyyy-mm-dd");
date date1 = sdf.parse("2019-10-01");
date date2 = sdf.parse("2019-10-17");
system.out.println("date1 : " + sdf.format(date1));
system.out.println("date2 : " + sdf.format(date2));
long time1 = date1.gettime();
long time2 = date2.gettime();
if (time1 > time2) {
system.out.println("date1 is after date2");
} else if (time1 < time2) {
system.out.println("date1 is before date2");
} else if (time1 == time2) {
system.out.println("date1 is equal to date2");
} else {
system.out.println("咋到这的?");
}
}
}
date1 : 2019-10-01
date2 : 2019-10-17
date1 is before date2
java 8 中的 isbefore() isafter() isequal() compareto()
package com.wupx.date;
import java.time.localdate;
import java.time.format.datetimeformatter;
public class datedemo5 {
public static void main(string[] args) {
datetimeformatter sdf = datetimeformatter.ofpattern("yyyy-mm-dd");
localdate date1 = localdate.of(2019, 10, 01);
localdate date2 = localdate.of(2019, 10, 17);
system.out.println("date1 : " + sdf.format(date1));
system.out.println("date2 : " + sdf.format(date2));
system.out.println("is...");
if (date1.isafter(date2)) {
system.out.println("date1 is after date2");
}
if (date1.isbefore(date2)) {
system.out.println("date1 is before date2");
}
if (date1.isequal(date2)) {
system.out.println("date1 is equal date2");
}
system.out.println("compareto...");
if (date1.compareto(date2) > 0) {
system.out.println("date1 is after date2");
} else if (date1.compareto(date2) < 0) {
system.out.println("date1 is before date2");
} else if (date1.compareto(date2) == 0) {
system.out.println("date1 is equal to date2");
} else {
system.out.println("咋到这的?");
}
}
}
date1 : 2019-10-01
date2 : 2019-10-17
is...
date1 is before date2
compareto...
date1 is before date2
总结