java中日期比较的方法_在 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,因此两个日期可以直接用 compareTo 方法进行比较。

如果两个日期相等,则返回值为0。

如果 Date1 在 Date2 参数之后,则返回值大于0。

如果 Date1 在 Date2 参数之前,则返回值小于0。

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()

可以用 equals、after 和 before 方法比较日期。

如果两个日期在同一时间点,equals方法将返回true。

如果 date1 在 date2 之前,before 返回 true,否则返回 false。

如果 date2 在 date1 之后,after 返回 true,否则返回 false。

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()

Calendar 类也有 compareTo、equals、after 和 before 方法,工作方式与上面描述的 Date 类的方法相同。因此,如果日期信息保存在 Calendar 类中,则不需要提取日期来执行比较。

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()

可以直接比较两个日期的时间点。这是对两种原始数据类型的比较,因此可以使用 < 、 > 和 == 来比较。

在比较日期之前,必须使用前面创建的 Date 对象中的数据来创建长整型。

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()

在 Java 8 中,可以使用新的 isBefore()、isAfter()、isEqual() 以及 compareTo() 来比较 LocalDate、LocalTime 和 LocalDateTime。

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

总结

本文主要讲解了在 Java 中比较日期的几种常用方法,可以自己实际操作一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java处理Excel日期格式,可以通过以下几个步骤来实现: 1. 使用POI库读取Excel文件,获取日期单元格的值。 2. 判断单元格的格式是否为日期格式,可以使用Cell类的getCellType()方法和DataFormatter类的formatCellValue()方法来判断。 3. 如果单元格的格式为日期格式,可以使用DataFormatter类的formatCellValue()方法日期格式转换为字符串格式。 4. 将字符串格式的日期转换为Java日期格式,可以使用SimpleDateFormat类的parse()方法或者DateTimeFormatter类的parse()方法进行转换。 下面是一个示例代码,演示如何读取Excel日期格式,并将其转换为Java日期格式: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Date; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class ExcelDateConverter { public static void main(String[] args) throws IOException, ParseException { // 读取Excel文件 File file = new File("test.xlsx"); FileInputStream fis = new FileInputStream(file); Workbook workbook = WorkbookFactory.create(fis); fis.close(); // 获取第一个Sheet int sheetIndex = 0; DataFormatter dataFormatter = new DataFormatter(); LocalDate localDate; DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); for (int i = 0; i < workbook.getSheetAt(sheetIndex).getPhysicalNumberOfRows(); i++) { Cell cell = workbook.getSheetAt(sheetIndex).getRow(i).getCell(0); if (cell != null) { // 判断单元格的格式是否为日期格式 if (DateUtil.isCellDateFormatted(cell)) { // 使用DataFormatter类将日期格式转换为字符串格式 String dateString = dataFormatter.formatCellValue(cell); // 使用SimpleDateFormat类将字符串格式的日期转换为Java日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse(dateString); System.out.println(date); // 使用Java8的LocalDate类将字符串格式的日期转换为Java日期格式 localDate = LocalDate.parse(dateString, dateTimeFormatter); System.out.println(localDate); } } } } } ``` 在上面的代码,我们使用了POI库的DataFormatter类来判断单元格的格式是否为日期格式,并将日期格式转换为字符串格式。然后,我们使用了SimpleDateFormat类和Java8的LocalDate类将字符串格式的日期转换为Java日期格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值