java中如何获取上个月时间戳

java中如何获取上个月时间戳

作者:Rhett Bai发布时间:2026-02-03阅读时长:0 分钟阅读次数:1

用户关注问题

Q
如何用Java代码计算上个月的起始时间戳?

我想用Java获取上个月的第一天的时间戳,该怎么实现?

A

获取上个月第一天时间戳的方法

可以使用Java 8中的java.time包,先获取当前日期,减去一个月后,将日期调整到当月的第1天,然后转换为时间戳。示例代码如下:

import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;

LocalDate now = LocalDate.now();
LocalDate firstDayOfLastMonth = now.minusMonths(1).withDayOfMonth(1);
ZonedDateTime zdt = firstDayOfLastMonth.atStartOfDay(ZoneId.systemDefault());
long timestamp = zdt.toInstant().toEpochMilli();
System.out.println(timestamp);
Q
Java中如何获取上个月的结束时间戳?

我需要在Java里得到上个月最后一天的结束时间戳,怎么操作?

A

获取上个月最后一天时间戳的方法

可以先获取当前日期,减去一个月,调整日期到该月的最后一天,设置时间为当天的最后一刻,然后转换为时间戳。示例代码如下:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.TemporalAdjusters;

LocalDate now = LocalDate.now();
LocalDate lastDayOfLastMonth = now.minusMonths(1).with(TemporalAdjusters.lastDayOfMonth());
LocalDateTime lastMoment = lastDayOfLastMonth.atTime(23,59,59,999000000);
ZonedDateTime zdt = lastMoment.atZone(ZoneId.systemDefault());
long timestamp = zdt.toInstant().toEpochMilli();
System.out.println(timestamp);
Q
为什么使用Java获取的上个月时间戳可能和预期不同?

我用Java代码获取上个月时间戳,但是结果和预期不一致,可能是什么原因?

A

常见原因及解决办法

时区差异是导致结果异常的常见原因,确保在转换时间戳时使用了正确的时区。此外,时间的起始点或结束点没有正确设置也会出现差异。建议使用java.time包中的ZoneId和ZonedDateTime明确时区,另外确认时间调整到当月第一天或最后一天时也考虑了准确的时分秒。