ChronoField.MILLI_OF_SECOND Java21 也没有
时间: 2024-09-21 20:02:50 浏览: 35
`ChronoField.MILLI_OF_SECOND` 是 Java 8 中 `java.time.chrono.ChronoField` 类中的常量,它代表秒中的毫秒数。然而,从 Java 9 开始,许多旧的 ChronoField 被替换为了更简洁的命名,同时引入了新的包结构。
在 Java 21,你可以通过以下方式找到等效的字段:
- 如果你需要精确到毫秒,你可以直接访问 `ChronoUnit.Milliseconds` 或者使用 `ChronoUnit.NANOS` 并除以 1000 来获取类似的概念。
- 如果你想要获取秒内的毫秒数,可以使用 `LocalTime` 类的 `getNano()` 方法,因为纳秒是秒内最小的时间单位,然后除以 1_000_000(10^6)得到毫秒。
示例代码如下:
```java
int nanoOfSecond = localTime.getNano(); // 获取纳秒
int milliOfSecond = nanoOfSecond / ChronoUnit.NANOS_PER_MILLISECOND;
```
请注意,`ChronoField` 相关的常量通常用于历史记录或特定上下文,现代的日期和时间API 更侧重于 `LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 的直接操作。
相关问题
ChronoField.MILLI_OF_SECOND Java21 也没有
实际上,在Java 21及之后版本中,`ChronoField.MILLI_OF_SECOND` 已经不再是一个官方支持的字段,因为Java的时间处理在Java 8中引入了更细粒度的纳秒(NANO_OF_SECOND)处理。`MILLI_OF_SECOND` 代表的是秒中的毫秒,但在Java中已经不推荐直接使用这种较低的精度,因为它在处理高精度时间时可能会丢失信息。
如果你想在Java 21及以上获取毫秒级别的精确度,你应该使用 `ChronoUnit.MICROS` 或 `ChronoField.MICRO_OF_SECOND`,这两个都是基于纳秒计算的,可以提供更高的分辨率。例如:
```java
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern(DATE_FORMAT)
.appendFraction(ChronoUnit.MICROS, 0, 3) // 保留微秒的三位小数
.toFormatter();
LocalDateTime localDateTime = LocalDateTime.parse(str, formatter);
```
这里 `MICROS` 是纳秒的一千倍,所以能得到三位小数的毫秒精度。
LocalDateTime删除毫秒
在使用 LocalDateTime 类进行时间表示时,是不会丢失毫秒部分的精度的。它的 toString() 方法默认以 ISO-8601 格式输出,包含毫秒部分。所以,如果你想删除 LocalDateTime 对象中的毫秒部分,你可以通过以下步骤实现:
1. 首先,获取到 LocalDateTime 对象的毫秒值,可以使用 toInstant() 方法将其转换为 Instant 对象,然后调用 get(ChronoField.MILLI_OF_SECOND) 方法获取毫秒值。
2. 然后,创建新的 LocalDateTime 对象,通过 with(ChronoField.MILLI_OF_SECOND, 0) 方法将毫秒值设为0。
下面是一个示例代码,演示了如何删除 LocalDateTime 对象的毫秒部分:
```java
LocalDateTime originalDateTime = LocalDateTime.now();
int millis = originalDateTime.toInstant().get(ChronoField.MILLI_OF_SECOND);
LocalDateTime truncatedDateTime = originalDateTime.with(ChronoField.MILLI_OF_SECOND, 0);
System.out.println("原始 LocalDateTime 对象: " + originalDateTime);
System.out.println("毫秒值: " + millis);
System.out.println("删除毫秒后的 LocalDateTime 对象: " + truncatedDateTime);
```
这样,你就可以得到一个删除了毫秒部分的 LocalDateTime 对象了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Date时间类丢失毫秒精度](https://blog.csdn.net/hua156497/article/details/131376288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [日常开发技巧(一):延迟删除文件](https://blog.csdn.net/liuminglei1987/article/details/127054745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文