Java:将 unix 时间(长整型)舍入到该月的第一天

Java: round unix time (Long) to first day of the month

我试图将 unix 时间四舍五入到 Java 中的月份的第一天,但​​没有成功。示例:

1314057600 (Tue, 23 Aug 2011 00:00:00 GMT)

1312156800 (Mon, 01 Aug 2011 00:00:00 GMT)

Unix 时间我正在从文件中读取并将其作为 Long 存储在变量中(变量名为 "valor")。 到目前为止,我已经能够用它创建一个 Java 时间戳

LocalDateTime timestamp = LocalDateTime.ofInstant(Instant.ofEpochSecond(valor), ZoneId.systemDefault());

并为月初创建新的时间戳:

LocalDate key = LocalDate.of(timestamp.getYear(), timestamp.getMonthValue(), 1);

如何将这个新的时间戳记为 Long?

像这样的东西听起来行得通:

key.atStartOfDay().atZone(ZoneId.systemDefault()).toEpochSecond()

(假设您希望它在系统的默认时区)。