DateTimeFormatter如何转换string为Date
时间: 2023-07-26 09:27:24 浏览: 73
在Java 8及以上版本中,可以使用DateTimeFormatter类来将String类型的日期转换为Date类型。以下是示例代码:
```java
String dateString = "2021-07-12";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(dateString, formatter);
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
```
首先,定义一个String类型的日期字符串,然后创建一个DateTimeFormatter对象,指定日期格式为"yyyy-MM-dd"。接着,使用LocalDate类的parse()方法将字符串解析为LocalDate类型的日期。最后,使用LocalDate类的atStartOfDay()方法和ZoneId.systemDefault()方法将LocalDate类型的日期转换为ZonedDateTime类型,再使用ZonedDateTime类的toInstant()方法将其转换为Instant类型,并使用Date类的from()方法将Instant类型转换为Date类型。
相关问题
使用datetimeformatter将date转换为string
可以使用如下的代码将date转换为string:
```
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.now();
String formattedDate = formatter.format(date);
System.out.println(formattedDate);
```
这段代码会将当前日期转换为格式为"yyyy-MM-dd"的字符串,并输出到控制台上。
DateTimeFormatter如何转换Date为string再转回Date
要使用DateTimeFormatter将Date转换为String,可以先将Date转换为LocalDateTime,然后使用DateTimeFormatter格式化为String。示例代码如下:
```java
// 创建Date对象
Date date = new Date();
// 将Date转换为LocalDateTime
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
// 将LocalDateTime格式化为String
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = localDateTime.format(formatter);
// 将String转换为LocalDateTime
LocalDateTime parsedDateTime = LocalDateTime.parse(formattedDateTime, formatter);
// 将LocalDateTime转换为Date
Instant instant2 = parsedDateTime.atZone(zoneId).toInstant();
Date date2 = Date.from(instant2);
```
在这个示例中,我们首先将Date转换为Instant,然后使用系统默认时区创建ZoneId对象,再将Instant转换为LocalDateTime。然后,我们使用DateTimeFormatter将LocalDateTime格式化为String,并将其转换回LocalDateTime,最后再将LocalDateTime转换回Date。注意,这里使用了系统默认时区,如果需要使用其他时区,可以使用ZoneId.of()方法创建时区对象。