8
项目中希望LocalDateTime转为long型时间戳,但是无论如何设置都无效,经追踪代码之后,发现可能有些逻辑问题,不知道是不是我理解得不对。
问题见下文代码中的注释中:
if (format == null) {
if ((features & mask) != 0 || serializer.isEnabled(SerializerFeature.UseISO8601DateFormat)) {
format = formatter_iso8601_pattern;
} else {
int nano = dateTime.getNano();
if (nano == 0) {
format = formatter_iso8601_pattern;
} else if (nano % 1000000 == 0) {
format = formatter_iso8601_pattern_23;
} else {
format = formatter_iso8601_pattern_29;
}
}
}
// 我的问题在这里,经过上述过程后,foramt一定不为null,那后两个逻辑分支进不去呢
if (format != null) {
write(out, dateTime, format);
} else if (out.isEnabled(SerializerFeature.WriteDateUseDateFormat)) {
//使用固定格式转化时间
write(out, dateTime, JSON.DEFFAULT_DATE_FORMAT);
} else {
out.writeLong(dateTime.atZone(JSON.defaultTimeZone.toZoneId()).toInstant().toEpochMilli());
}