gpt4 book ai didi

java - 如何从日期格式中获得最低的计时单位?

转载 作者:行者123 更新时间:2023-12-01 13:01:56 26 4
gpt4 key购买 nike

看例子:

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



笔记:
  • 它依赖于单位在 ChronoField 枚举中按升序排列的事实。
  • 它适用于内置单位(年、月、日、秒、纳秒),但可能无法为其他字段(例如基于周的字段或毫秒/微秒字段)提供您想要的结果。

  • 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;
    }

    关于java - 如何从日期格式中获得最低的计时单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62404701/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com