Java 有两个不确定格式的时间字符串,可能是yyyy-MM-dd也可能是yyyy-MM怎么比较这两个时间的大小
时间: 2024-09-19 16:05:57 浏览: 36
Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题
5星 · 资源好评率100%
在Java中,如果你有两个不确定格式的时间字符串,一个是"yyyy-MM-dd"格式,另一个是"yyyy-MM"格式,直接比较可能会有问题,因为缺少日期信息。为了比较它们,你需要先将这两个字符串转换成统一的`LocalDate`或`ZonedDateTime`对象。
首先,你可以使用`java.time`包下的`DateTimeFormatter`类来解析和格式化日期。对于"yyyy-MM-dd"格式,创建一个完整的日期格式解析器;对于"yyyy-MM"格式,需要先假设默认的日期是01日,然后创建一个只包含年月部分的格式。
下面是一个示例:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String format1 = "2023-05-30"; // "yyyy-MM-dd"
String format2 = "2023-06"; // "yyyy-MM"
DateTimeFormatter formatterWithDay = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date1 = LocalDate.parse(format1, formatterWithDay);
DateTimeFormatter formatterWithoutDay = DateTimeFormatter.ofPattern("uuuu-MM");
LocalDate assumedDate2 = LocalDate.of(date2.getYear(), Integer.parseInt(format2.split("-")[1]), 1); // Assuming default day as 1
System.out.println(date1.isAfter(assumedDate2)); // Compare the dates
}
}
```
在这个例子中,`date1`是完整日期,而`assumedDate2`是从`format2`推断出的日期,假设月份对应的第一天。最后通过`isAfter()`方法判断两个日期的先后顺序。
阅读全文