Java 入参 date类型的"2024-09" 返回24 年 9月 第一天和 最后一天的日期 返回格式年月日 时分秒
时间: 2024-09-19 18:10:55 浏览: 43
在Java中,处理字符串格式的日期并获取特定月份的第一天和最后一天,通常需要用到`java.time`包下的`LocalDate`类。给定一个只包含年份和月份的字符串 "2024-09",可以按照以下步骤操作:
1. 首先,需要将字符串转换成`LocalDate`对象。假设当前默认的日期格式是ISO 8601的 "yyyy-MM",可以使用`DateTimeFormatter`来解析这个格式:
```java
String inputDate = "2024-09";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
LocalDate localDate = LocalDate.parse(inputDate, formatter);
```
2. 接着,获取指定月份的第一天和最后一天。这里需要用到`MonthDay`类:
```java
MonthDay firstOfMonth = MonthDay.of(localDate.getMonth(), 1);
MonthDay lastOfMonth = MonthDay.of(localDate.getMonth().getValue() + 1, 1).minusDays(1); // 注意加一是因为月份是从0开始计数的
```
`MonthDay.of(monthValue, 1)`返回该月第一天,而`MonthDay.of(monthValue+1, 1).minusDays(1)`返回下个月的第一天,因为我们需要上个月的最后一天。
3. 将`MonthDay`转换回`LocalDate`,并格式化输出:
```java
ZonedDateTime firstDay = ZonedDateTime.of(localDate.atStartOfDay(), ZoneId.systemDefault());
LocalDate startDate = firstDay.toLocalDate();
ZonedDateTime lastDay = ZonedDateTime.of(lastOfMonth.atEndOf(MonthDay::range), ZoneId.systemDefault());
LocalDate endDate = lastDay.toLocalDate();
// 格式化日期输出
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String startDateStr = startDate.format(dateFormatter);
String endDateStr = endDate.format(dateFormatter);
```
阅读全文