把毫秒数转换为只有时间而没有日期的LocalDateTime
时间: 2023-10-14 19:14:52 浏览: 80
可以使用`Instant`和`LocalTime`来实现,具体代码如下:
```java
long millis = System.currentTimeMillis();
Instant instant = Instant.ofEpochMilli(millis);
LocalTime localTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalTime();
```
这里的`ZoneId.systemDefault()`获取当前系统默认时区,你可以根据自己的需求进行修改。最后得到的`localTime`对象只包含时间信息,没有日期信息。
相关问题
毫秒数转 localdatetime
要将毫秒数转换为`LocalDateTime`,您可以使用`java.time.Instant`类来实现。下面是一个示例代码:
```java
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
public class Main {
public static void main(String[] args) {
long milliseconds = 1631337600000L; // 毫秒数
// 将毫秒数转换为Instant对象
Instant instant = Instant.ofEpochMilli(milliseconds);
// 将Instant对象转换为LocalDateTime对象
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println(localDateTime);
}
}
```
在上面的示例中,我们将毫秒数1631337600000转换为对应的`LocalDateTime`对象。输出结果将会是日期和时间的格式,例如:2021-09-11T00:00。
请注意,这个转换过程还涉及到时区的问题。在示例代码中,我们使用了`ZoneId.systemDefault()`来获取当前系统默认的时区。您可以根据需要使用其他时区来进行转换。
java LocalDateTime获取毫秒数
在Java中,`LocalDateTime`是一个日期时间类,它表示的是一个不可分割的日期和时间,不包含时区信息。如果你想要获取`LocalDateTime`对象的毫秒数,可以直接将其转换为`Instant`对象,因为`Instant`是基于UNIX纪元(自1970年1月1日0点0分0秒起的总秒数加上小数点后的纳秒数)的,单位是毫秒。
以下是转换过程的代码示例:
```java
import java.time.LocalDateTime;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
// 创建一个LocalDateTime对象
LocalDateTime localDateTime = LocalDateTime.now();
// 将LocalDateTime转换为Instant对象,获取毫秒数
Instant instant = Instant.ofEpochSecond(localDateTime.atZone(ZoneOffset.UTC).toInstant().toEpochMilli());
// 输出毫秒值
long milliseconds = instant.toEpochMilli();
System.out.println("LocalDateTime的毫秒数: " + milliseconds);
}
}
```
在这个例子中,我们先将`LocalDateTime`转换为带有时区信息的`ZonedDateTime`,然后再转为`Instant`。`atZone(ZoneOffset.UTC)`用于设置UTC时区。
阅读全文