LocalDateTime获取传入时间戳的上一个小时的开始时间戳
时间: 2023-07-28 22:26:19 浏览: 162
你可以使用Java 8的LocalDateTime类来获取传入时间戳的上一个小时的开始时间戳。具体步骤如下:
1. 将传入的时间戳转换为LocalDateTime对象:
```
Instant instant = Instant.ofEpochMilli(timestamp);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
```
2. 获取上一个小时的开始时间:
```
LocalDateTime previousHour = localDateTime.minusHours(1).withMinute(0).withSecond(0).withNano(0);
```
3. 将上一个小时的开始时间转换为时间戳:
```
long previousHourTimestamp = previousHour.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
```
最后,previousHourTimestamp就是传入时间戳的上一个小时的开始时间戳。
相关问题
LocalDateTime获取传入时间戳所在小时的开始时间戳
可以通过以下代码获取传入时间戳所在小时的开始时间戳:
```java
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
public class Example {
public static void main(String[] args) {
long timestamp = 1628680800; // 传入的时间戳,单位为秒
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(timestamp), ZoneId.systemDefault());
LocalDateTime startOfHour = dateTime.withMinute(0).withSecond(0).withNano(0);
long startOfHourTimestamp = startOfHour.atZone(ZoneId.systemDefault()).toEpochSecond();
System.out.println(startOfHourTimestamp); // 输出:1628677200
}
}
```
其中,`LocalDateTime.ofInstant`方法将时间戳转换为`LocalDateTime`对象,`withMinute(0).withSecond(0).withNano(0)`将分、秒、纳秒设置为0,得到这个小时的开始时间,再通过`atZone`方法将`LocalDateTime`转换为`ZonedDateTime`,最后通过`toEpochSecond`方法获取时间戳。
LocalDateTime获取传入时间戳当前小时的结束时间戳
可以使用Java 8中的LocalDateTime类来获取指定时间戳所在小时的结束时间戳。具体的实现方法如下:
```
// 获取当前时间戳
long timestamp = System.currentTimeMillis();
// 将时间戳转换为LocalDateTime对象
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault());
// 获取当前小时的结束时间
LocalDateTime endOfHour = dateTime.withMinute(59).withSecond(59).withNano(999999999);
// 将结束时间转换为时间戳
long endOfHourTimestamp = endOfHour.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
```
首先,使用System.currentTimeMillis()方法获取当前时间戳。然后,使用Instant.ofEpochMilli()方法将时间戳转换为Instant对象,再使用LocalDateTime.ofInstant()方法将Instant对象转换为LocalDateTime对象。
接下来,使用LocalDateTime对象的withMinute()、withSecond()和withNano()方法,将当前时间设置为当前小时的最后一秒。
最后,使用LocalDateTime对象的atZone()方法将时间转换为指定时区的ZonedDateTime对象,再使用toInstant()方法将ZonedDateTime对象转换为Instant对象,最终使用toEpochMilli()方法将Instant对象转换为时间戳。
阅读全文