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

java日期比较的四种方法

程序员文章站 2022-05-05 14:51:48
...

java日期比较的四种方法

package 日期比较;

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期比较的四种方法 测试
 */
public class DateCompare {

    /**
     * 第一种:java.util.Date 提供了两个比较日期的经典方法compareTo()
     * 1.如果两个日期相等,就返回值0
     * 2.如果Date在date参数之后,则返回值大于0。
     * 3.如果Date在date参数之前,则返回值小于0。
     */
    @Test
    public void test1() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       Date date1 = sdf.parse("2009-01-01");
       Date date2 = sdf.parse("2019-01-01");

       System.out.println(date1);
       System.out.println(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("程序怎么会运行到这里?正常应该不会");
       }
    }

    /**
     * 第二种方法
     * 使用java.util.Calendar比较两个Date日期
     */
    @Test
    public void test2() throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = format.parse("2010-10-10");
        Date date2= format.parse("2020-10-10");

        Calendar c1 = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        c1.setTime(date1);
        c2.setTime(date2);
        if(c1.equals(c2)){
            System.out.println("两个时间相等");
        } else if(c1.after(c2)){
            System.out.println("date1 在 date2 的后面");
        }else if(c1.before(c2)){
            System.out.println("date1 在 date2 的前面");
        }else{
            System.out.println("杨峰王八蛋");
        }
    }

    /**
     * 第三种方法
     *一种语义上比较友好的方法来比较两个java.util.Date
     */
    @Test
    public void test3() throws Exception{
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

        Date date1 = format.parse("2010-10-10");
        Date date2 = format.parse("2020-10-10");

        if(date1.after(date2)){
            System.out.println("date1 在 date2 后面");
        }else if(date1.before(date2)){
            System.out.println("date1 在 date2 前面");
        }else if(date1.equals(date2)){
            System.out.println("date1 与 date2 的时间一样");
        }
    }

    /**
     * 第四种方法
     * Java8 中的比较方法
     * 在Java 8中,可以使用新的isBefore(),isAfter(),
     * isEqual()和compareTo()来比较LocalDate,LocalTime和LocalDateTime
     * 类 java.time.LocalDate
     */
    @Test
    public void test4() throws Exception{
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate date1 = LocalDate.of(2020, 11, 11);
        LocalDate date2 = LocalDate.of(2010, 11, 11);

        System.out.println(date1);
        System.out.println(date2);

        String date11 = formatter.format(date1);
        String date22 = formatter.format(date2);

        System.out.println(date11);
        System.out.println(date22);

//        if(date1.isAfter(date2)){
//            System.out.println("date1 在 date2 的后面");
//        }else if(date2.isBefore(date2)){
//            System.out.println("date1 在 dat2 的前面");
//        }else if(date1.isEqual(date2)){
//            System.out.println("两个时间相等");
//        }else{
//            System.out.println("代码怎么会运行到这里呢");
//        }
        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("你觉得会运行到这个吗");
        }

    }

}