请看例子。
yyyy-MM-dd -> java.time.temporal.ChronoUnit.DAYS
yyyy-MM-dd HH -> java.time.temporal.ChronoUnit.HOURS
yyyy;HH;ss -> java.time.temporal.ChronoUnit.SECONDS
yyyy;dd;MM -> java.time.temporal.ChronoUnit.DAYS
是否有API可以从日期时间字符串格式中获取最低级的计时单位?
你可以尝试解析一个预定的日期并检查哪些单位有值。我已经写了一个快速的例子,输出如下。
yyyy-MM-dd Days yyyy-MM-dd HH Hours yyyy;HH;ss Seconds yyyy;dd;MM ss n Nanos
笔记。
public static void main(String[] args) {
String[] formats = { "yyyy-MM-dd", "yyyy-MM-dd HH", "yyyy;HH;ss", "yyyy;dd;MM ss n" };
LocalDateTime test = LocalDateTime.of(1, 1, 1, 1, 1, 1, 1);
for (String f : formats) {
DateTimeFormatter format = DateTimeFormatter.ofPattern(f);
TemporalAccessor accessor = format.parse(test.format(format));
for (ChronoField unit : ChronoField.values()) {
if (testUnit(accessor, unit)) {
System.out.println(f + " " + unit.getBaseUnit());
break;
}
}
}
}
private static boolean testUnit(TemporalAccessor accessor, ChronoField unit) {
return accessor.isSupported(unit) && accessor.getLong(unit) == 1;
}