用Java格式化LocalDate:What';“这是”的模式;2020年3月26日“;

用Java格式化LocalDate:What';“这是”的模式;2020年3月26日“;,java,Java,我似乎想不出“2020年3月26日”(没有逗号)的模式。有人能帮忙吗?我尝试了模式的DateTimeFormatter.of(“MMMM-dd-yyyy”)和模式的DateTimeFormatter.of(“MMM-dd-yyyy”)。任何帮助都将不胜感激 最小可复制示例: String strDate = "March 26 2020"; DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM

我似乎想不出“2020年3月26日”(没有逗号)的模式。有人能帮忙吗?我尝试了模式的
DateTimeFormatter.of(“MMMM-dd-yyyy”)
和模式的
DateTimeFormatter.of(“MMM-dd-yyyy”)
。任何帮助都将不胜感激

最小可复制示例:

    String strDate = "March 26 2020";
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM dd uuuu");
    LocalDate date = LocalDate.parse(strDate, dtf);
    System.out.println(date);
在我的电脑上

线程“main”java.time.format.DateTimeParseException中的异常: 无法在索引0处分析文本“2020年3月26日”

预期产出为


在格式模式中使用
MMM
时,例外情况相同。

使用模式
MMMM dd uuuu
Locale.ENGLISH

演示:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        String strDate = "March 26 2020";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM dd uuuu", Locale.ENGLISH);
        LocalDate date = LocalDate.parse(strDate, dtf);
        System.out.println(date);
    }
}
2020-03-26
输出:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        String strDate = "March 26 2020";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM dd uuuu", Locale.ENGLISH);
        LocalDate date = LocalDate.parse(strDate, dtf);
        System.out.println(date);
    }
}
2020-03-26
试试这个

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM' 'dd' 'yyyy", Locale.ENGLISH)
对我来说很好,输出:

December 10 2020

Locale.ENGLISH
非常流行!我认为,
Locale.US
也可以
Locale.ROOT
,有趣的是,没有。真的很有趣,@mcepender,谢谢。在我的Java11上,
Locale.ROOT产生并期望2020年3月26日
。可能对我来说是个bug,但可能有一些原因我不明白。您不需要使用
'
显式指定
MMMM
dd
之间或
dd
yyyy
之间的空格。你可以不使用单引号简单地把空格放进去。我看到有时候它会让你感到惊讶difference@MichaelGantman不,一个空间永远不会。有些人还是推荐单引号,这可能是口味的问题。