java将long类型的时间年月日改为今日,时分秒为原来的
时间: 2024-10-08 10:17:01 浏览: 33
在Java中,如果你有一个`long`类型的值,它通常代表自1970年1月1日(Unix时间戳)以来的毫秒数。如果你想将其转换为今天的日期,你可以先计算出当前的日期,然后从给定的时间戳中减去这个差值。这里是一个简单的步骤:
1. 获取当前日期和时间(使用`java.time.LocalDate`和`LocalTime`):
```java
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
LocalDateTime today = LocalDateTime.now(ZoneId.systemDefault());
LocalDate currentDate = today.toLocalDate();
LocalTime currentTime = today.toLocalTime();
```
2. 将给定的long转换为`LocalDateTime`,假设`long timestampInMilliseconds`是你的输入:
```java
long timestampInMilliseconds = ...; // your long timestamp value
LocalDateTime dateFromTimestamp = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestampInMilliseconds), ZoneId.systemDefault());
```
3. 计算两个日期之间的差异(以天为单位),并从原始时间上加上这个差值(假设我们只关心日期,忽略时间部分):
```java
int daysDifference = (int) ChronoUnit.DAYS.between(dateFromTimestamp, today);
LocalDateTime dateTimeToReturn = dateFromTimestamp.plusDays(daysDifference);
LocalTime timeFromTimestamp = dateTimeToReturn.toLocalTime(); // 时间保持不变
```
4. 结果就是今天,时分秒保留原来的时间:
```java
LocalDate todayWithSameTime = currentDate;
LocalDateTime finalResult = LocalDate.of(todayWithSameTime.getYear(), todayWithSameTime.getMonthValue(), todayWithSameTime.getDayOfMonth())
.atTime(timeFromTimestamp);
```
阅读全文