代码之家  ›  专栏  ›  技术社区  ›  LunaticJape

datetimeformatter将localdate序列化为每月的第1/2/3个序号[重复]

  •  3
  • LunaticJape  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我想展示一下 LocalDate 作为:

    first day: 1st;
    second day: 2nd;
    third day: 3rd;
    all rest days: Nth.
    

    例如 1980-10-1 作为 1st Oct 1980

    我可以用 DateTimeFormatter.ofPattern("dth MMM yyyy") . 由于前3天的模式与休息日不同,如何构造格式化程序来序列化前3天?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Arnault Le Prévost-Corvellec    7 年前

    以下是您要搜索的内容: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatterBuilder.html#appendText-java.time.temporal.TemporalField-java.util.Map-

    下面是一个例子:

    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
    Map<Long, String> mapToRoman = new HashMap<>();
    mapToRoman.put(1L, "1st");
    mapToRoman.put(2L, "2nd");
    mapToRoman.put(3L, "3rd");
    mapToRoman.put(4L, "4th");
    // continue to map all available days in a month
    builder.appendText(ChronoField.DAY_OF_MONTH, mapToRoman );
    builder.append(DateTimeFormatter.ofPattern(" MM yyyy", Locale.US));
    DateTimeFormatter formatter = builder.toFormatter();