使用java.time包中的LocalDateTime类获取当前时间戳
时间: 2023-10-14 10:19:00 浏览: 81
可以使用以下代码获取当前时间戳:
```java
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
LocalDateTime now = LocalDateTime.now();
long timestamp = now.until(LocalDateTime.EPOCH, ChronoUnit.MILLIS);
System.out.println(timestamp);
```
这里使用了`until`方法来计算当前时间戳与纪元时间(即1970年1月1日00:00:00)之间的毫秒数。
相关问题
java.time 包中的日期时间相关类。
在 JDK8 中,Java 引入了 java.time 包来替代旧的 java.util.Date 和 java.util.Calendar 类,提供了更加全面、更加易用的日期时间处理方式。下面是 java.time 包中的一些常用类:
1. LocalDate:表示日期,不包含时间信息。
2. LocalTime:表示时间,不包含日期信息。
3. LocalDateTime:表示日期和时间,不包含时区信息。
4. ZonedDateTime:表示日期、时间和时区信息。
5. Instant:表示时间戳,可用于机器之间的时间传输。
6. Duration:表示时间段,精确到纳秒级别。
7. Period:表示日期段,精确到天级别。
下面是一个示例代码,展示了如何使用 LocalDate 类来表示日期:
```java
import java.time.LocalDate;
public class DateClass {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
System.out.println("现在的日期是: " + now);
}
}
```
这里我们使用了 LocalDate.now() 方法来获取当前的日期,并将其打印出来。你也可以使用其他类和方法来获取指定的日期时间、时区、时间段等信息。
LocalDateTime转换为UTC时间戳
可以使用Java 8提供的java.time包中的类来实现LocalDateTime到UTC时间戳的转换。具体步骤如下:
1. 首先需要获取当前的UTC时间戳,可以使用Instant类的now()方法来获取:
```
Instant instant = Instant.now();
```
2. 将LocalDateTime转换为Instant,可以使用atZone()方法指定时区创建一个ZonedDateTime对象,然后再通过toInstant()方法获取Instant对象:
```
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
Instant instant = zonedDateTime.toInstant();
```
3. 将Instant对象转换为UTC时间戳,可以使用toEpochMilli()方法获取从1970年1月1日00:00:00开始的毫秒数:
```
long timestamp = instant.toEpochMilli();
```
完整代码示例如下:
```
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class LocalDateTimeToTimestamp {
public static void main(String[] args) {
// 获取当前UTC时间戳
Instant instant = Instant.now();
long timestamp1 = instant.toEpochMilli();
System.out.println("Current UTC timestamp: " + timestamp1);
// 将LocalDateTime转换为UTC时间戳
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
Instant instant2 = zonedDateTime.toInstant();
long timestamp2 = instant2.toEpochMilli();
System.out.println("LocalDateTime to UTC timestamp: " + timestamp2);
}
}
```
输出结果:
```
Current UTC timestamp: 1626868411834
LocalDateTime to UTC timestamp: 1626868411834
```
阅读全文