
localdatetime 生成整点时间戳末尾多 1 的原因
使用 localdatetime.parse 方法解析时间字符串并在转换为时间戳时,可能会出现时间戳末尾带有 1 或 2 的情况。这是由于时间精度问题导致的。
解决方案
要解决此问题,可以将时间精度提高到微秒级别。具体修改如下:
- 将 datetimeformatter 的格式改为 "yymmddhhmmsssss"
- 将 toepochmilli 方法改为 toepochsecond
- 将结果乘以 1000 以获得秒级别的时间戳
修改后的代码如下:
static DateTimeFormatter df = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
long ts = LocalDateTime.parse(time, df).toInstant(ZoneOffset.of("+8")).getEpochSecond() * 1000;通过提高时间精度,可以避免生成带有末尾 1 或 2 的时间戳。










