LocalDateTime 取当前日期
时间: 2024-06-07 16:03:29 浏览: 150
LocalDateTime 是 Java 8 中的一个日期时间类,它表示了一个不带时区信息的日期时间对象。要取得当前日期,可以使用 LocalDateTime 的静态方法 now(),该方法返回一个当前时间的 LocalDateTime 对象。具体代码如下:
```
LocalDateTime now = LocalDateTime.now();
```
同时,如果需要获取当前日期的年、月、日等信息,也可以通过 LocalDateTime 对象的 getYear()、getMonthValue()、getDayOfMonth() 等方法来实现。
相关问题
java LocalDateTime获取当前日期后一天
### 获取明天的日期
为了获取 `LocalDateTime` 表示的当前日期后一天的时间,在 Java 中可以使用 `plusDays()` 方法来增加天数。下面是一个具体的实现方法:
```java
import java.time.LocalDateTime;
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 增加一天得到明天同一时刻的时间
LocalDateTime tomorrowSameTime = now.plusDays(1);
System.out.println("Tomorrow at the same time will be: " + tomorrowSameTime);
}
}
```
如果仅需获取明天午夜零点整的时间,则可以通过先创建今天的日期对象再设置时间为最小值并加上一天的方式完成。
```java
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
// 创建今天日期的对象,并将其时间设为当天最小时刻即00:00
LocalDateTime todayStartOfDay = LocalDate.now().atTime(LocalTime.MIN);
// 加上一天变为明天凌晨00:00
LocalDateTime tomorrowMidnight = todayStartOfDay.plusDays(1);
System.out.println("Tomorrow midnight is: " + tomorrowMidnight);
}
}
```
上述两种方式都可以满足需求,具体取决于想要获取的具体时间点是什么样的[^2]。
LocalDateTime取精确时间戳
### 使用 Java `LocalDateTime` 获取精确时间戳
为了获取更精确的时间戳,通常会使用纳秒级别的精度。下面展示了如何通过 `LocalDateTime` 结合其他类来实现这一目标。
#### 方法一:基于当前时间点
可以直接调用静态方法 `now()` 来创建代表当前时刻的对象实例,并进一步将其转换成自1970年1月1日以来经过的毫秒数或秒数加上额外的小数部分表示更高精度:
```java
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.Instant;
// 创建 LocalDateTime 对象并转化为 Instant 类型以便于计算时间戳
Instant instant = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant();
long epochMilli = instant.toEpochMilli(); // 获得毫秒级时间戳
double preciseTimestamp = epochMilli + (instant.getNano() / 1_000_000D); // 加上微秒级别偏移量得到更加精准的结果
System.out.println("Precise timestamp: " + preciseTimestamp);
```
此代码片段先利用 `LocalDateTime.now()` 取得本地当前时间,再借助 `atZone()` 函数指定默认时区后转为带有时区信息的时间对象 (`ZonedDateTime`) ,最后通过 `toInstant()` 将其变为标准 UTC 时间格式(`Instant`) 。这样就可以方便地访问到 Unix Time Stamp 的值了[^4]。
#### 方法二:给定特定日期时间字符串的情况
如果已经有了一个具体的日期时间字符串,则可以通过解析该字符串生成对应的 `LocalDateTime` 实例来进行相同的操作:
```java
import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.Instant;
String dateTimeStr = "2023-10-05T14:48:00";
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
LocalDateTime ldt = LocalDateTime.parse(dateTimeStr, formatter);
Instant instantFromGivenTime = ldt.atZone(ZoneId.of("UTC")).toInstant();
long millisecondPrecision = instantFromGivenTime.toEpochMilli();
double nanosecondPrecision = millisecondPrecision + ((ldt.getNano()) / 1e9d);
System.out.printf("Timestamp with nano precision from given time string is %.6f%n",nanosecondPrecision );
```
这段程序首先定义了一个 ISO 8601 格式的日期时间串作为输入源;接着采用预设好的模式去解释这个字符串从而构建起相应的 `LocalDateTime` 对象;之后按照前述逻辑完成向高精度时间戳的转变过程[^3]。
阅读全文
相关推荐














