java中传入一个日期类型为yyyy-MM-dd 怎么转换成当前日期的开始日期到结束日期
时间: 2024-02-20 08:58:26 浏览: 21
你可以使用Java中的日期时间类`LocalDate`来实现这个功能。具体方法是:
1. 首先,将传入的日期字符串转换成`LocalDate`对象:
```java
String dateStr = "2022-03-15";
LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
```
2. 然后,获取当前日期:
```java
LocalDate now = LocalDate.now();
```
3. 接着,将当前日期的年、月、日分别提取出来,用来构造开始日期和结束日期:
```java
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();
LocalDate startDate = LocalDate.of(year, month, day);
LocalDate endDate = startDate.plusDays(1).minusNanos(1);
```
这里,我们先用`of`方法构造开始日期,然后用`plusDays(1)`方法加上一天,再用`minusNanos(1)`方法减去一纳秒,得到结束日期,这样就能保证结束日期是当天的23:59:59了。
完整代码如下:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateTest {
public static void main(String[] args) {
String dateStr = "2022-03-15";
LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate now = LocalDate.now();
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();
LocalDate startDate = LocalDate.of(year, month, day);
LocalDate endDate = startDate.plusDays(1).minusNanos(1);
System.out.println("开始日期:" + startDate);
System.out.println("结束日期:" + endDate);
}
}
```
输出结果:
```
开始日期:2022-03-16
结束日期:2022-03-16T23:59:59.999999999
```
注意:这里的开始日期和结束日期都是包含当天的。如果需要不包含当天,可以将结束日期改为`startDate.plusDays(1)`。