欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java比较两个时间的大小不比交日期(java获取当前系统时间)

程序员文章站 2022-03-23 16:17:57
1. date.compareto()java.util.date提供了在java中比较两个日期的经典方法compareto()。如果两个日期相等,则返回值为0。如果date在date参数之后,则返回...

1. date.compareto()

java.util.date提供了在java中比较两个日期的经典方法compareto()。

  1. 如果两个日期相等,则返回值为0。
  2. 如果date在date参数之后,则返回值大于0。
  3. 如果date在date参数之前,则返回值小于0。
@test
void testdatecompare() throws parseexception {
  simpledateformat sdf = new simpledateformat("yyyy-mm-dd");
  date date1 = sdf.parse("2009-12-31");
  date date2 = sdf.parse("2019-01-31");

  system.out.println("date1 : " + sdf.format(date1));
  system.out.println("date2 : " + sdf.format(date2));

  if (date1.compareto(date2) > 0) {
    system.out.println("date1 时间在 date2 之后");
  } else if (date1.compareto(date2) < 0) {
    system.out.println("date1 时间在 date2 之前");
  } else if (date1.compareto(date2) == 0) {
    system.out.println("date1 时间与 date2 相等");
  } else {
    system.out.println("程序怎么会运行到这里?正常应该不会");
  }
}

输出结果:

date1 : 2009-12-31
date2 : 2019-01-31
date1 时间在 date2 之前
java比较两个时间的大小不比交日期(java获取当前系统时间)

2. date.before(),date.after()和date.equals()

一种语义上比较友好的方法来比较两个java.util.date

@test
void testdatecompare2() throws parseexception {
  simpledateformat sdf = new simpledateformat("yyyy-mm-dd");
  date date1 = sdf.parse("2009-12-31");
  date date2 = sdf.parse("2019-01-31");

  system.out.println("date1 : " + sdf.format(date1));
  system.out.println("date2 : " + sdf.format(date2));

  if (date1.after(date2)) {
    system.out.println("date1 时间在 date2 之后");
  }

  if (date1.before(date2)) {
    system.out.println("date1 时间在 date2 之前");
  }

  if (date1.equals(date2)) {
    system.out.println("date1 时间与 date2 相等");
  }
}

输出结果

date1 : 2009-12-31
date2 : 2019-01-31
date1 时间在 date2 之前

3. calender.before(),calender.after()和calender.equals()

使用java.util.calendar比较两个date日期

@test
void testdatecompare3() throws parseexception {
  simpledateformat sdf = new simpledateformat("yyyy-mm-dd");
  date date1 = sdf.parse("2009-12-31");
  date date2 = sdf.parse("2019-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 时间在 date2 之后");
  }

  if (cal1.before(cal2)) {
    system.out.println("date1 时间在 date2 之前");
  }

  if (cal1.equals(cal2)) {
    system.out.println("date1 时间与 date2 相等");
  }
}

输出结果:

date1 : 2009-12-31
date2 : 2019-01-31
date1 时间在 date2 之前

4. java 8日期比较方法

在java 8中,可以使用新的isbefore(),isafter(),isequal()和compareto()来比较localdate,localtime和localdatetime。以下示例以比较两个java.time.localdate

@test
void testdatecompare4() throws parseexception {
  datetimeformatter sdf = datetimeformatter.ofpattern("yyyy-mm-dd");
  localdate date1 = localdate.of(2009, 12, 31);
  localdate date2 = localdate.of(2019, 1, 31);

  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 时间在 date2 之后");
  }

  if (date1.isbefore(date2)) {
    system.out.println("date1 时间在 date2 之前");
  }

  if (date1.isequal(date2)) {
    system.out.println("date1 时间与 date2 相等");
  }
}

输出结果

date1 : 2009-12-31
date2 : 2019-01-31
is...
date1 时间在 date2 之前