java日期比较的四种方法

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("你觉得会运行到这个吗");
        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值