JAVA比较两个字符串日期或者Date日期的大小

JAVA比较两个字符串日期或者Date日期的大小

compareTo关键字的使用
compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。

该方法用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比较。
如果指定的数与参数相等返回0。
如果指定的数小于参数返回 -1。
如果指定的数大于参数返回 1。

        String startDate1="2019-07-12";
        String endDate1="2019-07-13";
        System.out.println(startDate1.compareTo(endDate1));

或者

	String startDate="2019-07-12 00:00:00";
    String endDate="2019-07-12 00:00:01";
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date start = format.parse(startDate);
    Date end = format.parse(endDate);
    System.out.println(start);
    System.out.println(start.compareTo(end));
### 比较仅含月日的Java日期字符串Java中,如果要比较两个只包含月日的日期字符串,则可以利用`java.time`包中的类来实现这一功能。具体来说,可以通过创建自定义逻辑或者借助`YearMonth`类以及手动解析的方式完成。 以下是通过手动解析并构建`LocalDate`对象来进行比较的方法: #### 方法一:基于固定年份的手动解析 由于输入数据仅有月和日部分,因此可以选择一个固定的年份作为基准(例如2000),以便于后续操作。这样能够充分利用`LocalDate`的功能进行比较。 ```java import java.time.LocalDate; import java.time.MonthDay; import java.time.format.DateTimeFormatter; public class MonthDayComparison { public static void main(String[] args) { String dateStr1 = "03-15"; // MM-dd format String dateStr2 = "07-22"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd"); LocalDate localDate1 = LocalDate.of(2000, Integer.parseInt(dateStr1.split("-")[0]), Integer.parseInt(dateStr1.split("-")[1])); LocalDate localDate2 = LocalDate.of(2000, Integer.parseInt(dateStr2.split("-")[0]), Integer.parseInt(dateStr2.split("-")[1])); int result = localDate1.compareTo(localDate2); System.out.println(result); // 输出负数表示dateStr1早于dateStr2;正数则相反;零表示相等。 } } ``` 这种方法简单明了,并且易于理解[^1]。 #### 方法二:使用 `MonthDay` 另一种更简洁的方式是直接采用`MonthDay`类,该类专门用于处理不带年的月份和日子组合。它提供了内置方法可以直接用来对比两个不含年份的信息。 ```java import java.time.MonthDay; import java.time.format.DateTimeFormatter; public class MonthDayCompareExample { public static void main(String[] args){ String dateStringOne="08-15"; String dateStringTwo="09-10"; DateTimeFormatter dtf=DateTimeFormatter.ofPattern("MM-dd"); MonthDay mdFirst=MonthDay.parse(dateStringOne,dtf); MonthDay mdSecond=MonthDay.parse(dateStringTwo,dtf); if(mdFirst.isBefore(mdSecond)){ System.out.println("The first date is before the second one."); }else if(mdFirst.isAfter(mdSecond)){ System.out.println("The first date is after the second one."); }else{ System.out.println("Both dates are equal regarding month and day."); } } } ``` 此方式更加推荐因为其清晰表达了只需要关注月与日的目的[^1]。 无论采取哪种方案,在实际应用过程中都应考虑边界条件测试,比如非法格式的数据输入等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值