[JAVA]时间日期比较

一.使用java.util.Date

1.使用befor和after

import java.util.Date;

public class DateComparison {
    public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = new Date(date1.getTime() + 1000); // date2 比 date1 晚 1 秒

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

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

2.使用 compareTo

import java.util.Date;

public class DateComparison {
    public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = new Date(date1.getTime() + 1000); // date2 比 date1 晚 1 秒

        int comparison = date1.compareTo(date2);
        if (comparison < 0) {
            System.out.println("date1 在 date2 之前");
        } else if (comparison > 0) {
            System.out.println("date1 在 date2 之后");
        } else {
            System.out.println("date1 与 date2 相同");
        }
    }
}

二.使用 java.util.Calendar

1.使用 before 和 after

import java.util.Calendar;

public class CalendarComparison {
    public static void main(String[] args) {
        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();
        cal2.add(Calendar.SECOND, 1); // cal2 比 cal1 晚 1 秒

        if (cal1.before(cal2)) {
            System.out.println("cal1 在 cal2 之前");
        }

        if (cal2.after(cal1)) {
            System.out.println("cal2 在 cal1 之后");
        }
    }
}

2.使用 compareTo

import java.util.Calendar;

public class CalendarComparison {
    public static void main(String[] args) {
        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();
        cal2.add(Calendar.SECOND, 1); // cal2 比 cal1 晚 1 秒

        int comparison = cal1.compareTo(cal2);
        if (comparison < 0) {
            System.out.println("cal1 在 cal2 之前");
        } else if (comparison > 0) {
            System.out.println("cal1 在 cal2 之后");
        } else {
            System.out.println("cal1 与 cal2 相同");
        }
    }
}

三.使用 java.time

java.time API 是 Java 8 引入的现代日期和时间 API,提供了更丰富和强大的日期时间操作功能。可以使用 isBeforeisAfter 和 compareTo 方法进行日期比较。

1.使用 LocalDate

import java.time.LocalDate;

public class LocalDateComparison {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.now();
        LocalDate date2 = date1.plusDays(1); // date2 比 date1 晚 1 天

        if (date1.isBefore(date2)) {
            System.out.println("date1 在 date2 之前");
        }

        if (date2.isAfter(date1)) {
            System.out.println("date2 在 date1 之后");
        }

        int comparison = date1.compareTo(date2);
        if (comparison < 0) {
            System.out.println("date1 在 date2 之前");
        } else if (comparison > 0) {
            System.out.println("date1 在 date2 之后");
        } else {
            System.out.println("date1 与 date2 相同");
        }
    }
}

2.使用 LocalDateTime

import java.time.LocalDateTime;

public class LocalDateTimeComparison {
    public static void main(String[] args) {
        LocalDateTime dateTime1 = LocalDateTime.now();
        LocalDateTime dateTime2 = dateTime1.plusSeconds(1); // dateTime2 比 dateTime1 晚 1 秒

        if (dateTime1.isBefore(dateTime2)) {
            System.out.println("dateTime1 在 dateTime2 之前");
        }

        if (dateTime2.isAfter(dateTime1)) {
            System.out.println("dateTime2 在 dateTime1 之后");
        }

        int comparison = dateTime1.compareTo(dateTime2);
        if (comparison < 0) {
            System.out.println("dateTime1 在 dateTime2 之前");
        } else if (comparison > 0) {
            System.out.println("dateTime1 在 dateTime2 之后");
        } else {
            System.out.println("dateTime1 与 dateTime2 相同");
        }
    }
}

3.使用 ZonedDateTime

import java.time.ZonedDateTime;

public class ZonedDateTimeComparison {
    public static void main(String[] args) {
        ZonedDateTime zonedDateTime1 = ZonedDateTime.now();
        ZonedDateTime zonedDateTime2 = zonedDateTime1.plusSeconds(1); // zonedDateTime2 比 zonedDateTime1 晚 1 秒

        if (zonedDateTime1.isBefore(zonedDateTime2)) {
            System.out.println("zonedDateTime1 在 zonedDateTime2 之前");
        }

        if (zonedDateTime2.isAfter(zonedDateTime1)) {
            System.out.println("zonedDateTime2 在 zonedDateTime1 之后");
        }

        int comparison = zonedDateTime1.compareTo(zonedDateTime2);
        if (comparison < 0) {
            System.out.println("zonedDateTime1 在 zonedDateTime2 之前");
        } else if (comparison > 0) {
            System.out.println("zonedDateTime1 在 zonedDateTime2 之后");
        } else {
            System.out.println("zonedDateTime1 与 zonedDateTime2 相同");
        }
    }
}

四.使用 java.sql.Timestamp

1.使用 before 和 after

import java.sql.Timestamp;

public class TimestampComparison {
    public static void main(String[] args) {
        Timestamp timestamp1 = new Timestamp(System.currentTimeMillis());
        Timestamp timestamp2 = new Timestamp(timestamp1.getTime() + 1000); // timestamp2 比 timestamp1 晚 1 秒

        if (timestamp1.before(timestamp2)) {
            System.out.println("timestamp1 在 timestamp2 之前");
        }

        if (timestamp2.after(timestamp1)) {
            System.out.println("timestamp2 在 timestamp1 之后");
        }
    }
}

2.使用 compareTo

import java.sql.Timestamp;

public class TimestampComparison {
    public static void main(String[] args) {
        Timestamp timestamp1 = new Timestamp(System.currentTimeMillis());
        Timestamp timestamp2 = new Timestamp(timestamp1.getTime() + 1000); // timestamp2 比 timestamp1 晚 1 秒

        int comparison = timestamp1.compareTo(timestamp2);
        if (comparison < 0) {
            System.out.println("timestamp1 在 timestamp2 之前");
        } else if (comparison > 0) {
            System.out.println("timestamp1 在 timestamp2 之后");
        } else {
            System.out.println("timestamp1 与 timestamp2 相同");
        }
    }
}

五.总结

我们展示了在 Java 中进行日期时间比较的多种方法,包括使用 java.util.Datejava.util.Calendarjava.time API 和 java.sql.Timestamp。这些方法各有特点,可以根据具体需求选择合适的方法进行日期时间的比较和处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值