传入时间戳通过LocalDateTime获取此时间戳所在月的最后时间戳
时间: 2023-07-21 07:08:53 浏览: 91
可以使用`LocalDateTime`和`ZoneOffset`来获取一个时间戳所在月的最后时间戳。具体的实现代码如下:
```java
long timestamp = 1629312000000L; // 假设传入的时间戳为 2021-08-19 00:00:00
ZoneOffset zoneOffset = ZoneOffset.of("+8");
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), zoneOffset);
LocalDateTime lastDayOfMonth = localDateTime.toLocalDate().with(TemporalAdjusters.lastDayOfMonth()).atTime(23, 59, 59);
long lastDayOfMonthTimestamp = lastDayOfMonth.toInstant(zoneOffset).toEpochMilli();
```
其中,`LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), zoneOffset)`表示将时间戳转化为`LocalDateTime`对象;`localDateTime.toLocalDate().with(TemporalAdjusters.lastDayOfMonth())`表示获取`LocalDateTime`所在月的最后一天;`lastDayOfMonth.atTime(23, 59, 59)`表示将最后一天的时间调整为23:59:59;`lastDayOfMonth.toInstant(zoneOffset).toEpochMilli()`表示将最后时间转化为时间戳。
需要注意的是,上述代码中的时区设置是硬编码的,如果需要适应不同的时区,可以根据实际情况进行调整。
阅读全文