2023-07-11T13:41:52.252+08:00[Asia/Shanghai]如何转变为yyyy-MM-dd格式 但是数据类型不变
时间: 2024-04-12 14:26:47 浏览: 178
bugreport-Redmi Note 11T Pro+-2023-07-21-213639.zip
要将`ZonedDateTime`对象表示的时间转换为"yyyy-MM-dd"格式的字符串,但保持数据类型不变,您可以使用`DateTimeFormatter`类将其格式化为字符串,然后再将字符串解析回`ZonedDateTime`对象。
以下是一个示例代码:
```java
import java.time.*;
import java.time.format.*;
public class Main {
public static void main(String[] args) {
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2023-07-11T13:41:52.252+08:00[Asia/Shanghai]"); // 示例时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 指定要转换的格式
String formattedDateTime = zonedDateTime.format(formatter); // 格式化时间
ZonedDateTime parsedDateTime = ZonedDateTime.parse(formattedDateTime + zonedDateTime.getOffset(), formatter); // 解析为ZonedDateTime对象
System.out.println("原始时间: " + zonedDateTime);
System.out.println("格式化后的时间: " + formattedDateTime);
System.out.println("解析后的时间: " + parsedDateTime);
}
}
```
在上述代码中,我们使用`ZonedDateTime.parse()`方法创建一个示例的`ZonedDateTime`对象,表示为"2023-07-11T13:41:52.252+08:00[Asia/Shanghai]"。
然后,我们创建一个`DateTimeFormatter`对象,指定要转换的格式为"yyyy-MM-dd"。
接下来,我们使用`format()`方法将`ZonedDateTime`对象格式化为指定的格式,并将结果存储在字符串变量`formattedDateTime`中。
最后,我们使用`ZonedDateTime.parse()`方法将格式化后的字符串和原始对象的偏移量(通过`getOffset()`方法获取)作为输入,解析为`ZonedDateTime`对象,并将结果存储在`parsedDateTime`变量中。
最后,我们分别打印原始时间、格式化后的时间和解析后的时间。
请注意,解析后的`parsedDateTime`对象与原始的`zonedDateTime`对象具有相同的数据类型,只是将格式进行了更改。同时,由于我们添加了原始对象的偏移量,所以解析后的时间保留了相同的时区信息。
阅读全文