使用MMMM和MMMMM使用SimpleDateFormat提取月份名称之间的区别是什么

DPM*_*DPM 2 java format date

我想答案是否定的.如果我使用4个或更多"M",结果是相同的.

public static void main (String[] args) 
{
    for (int monthNum = 1; monthNum <= 12; monthNum++) 
    {
        String month = new SimpleDateFormat("MMMM", Locale.US)
                          .format (new Date (1, monthNum, 2000));

        String month2 = new SimpleDateFormat("MMMMM", Locale.US)
                          .format (new Date (1, monthNum, 2000));

        if (month.equals(month2)) 
              continue;

        throw new RuntimeException ("");
    }
}
Run Code Online (Sandbox Code Playgroud)

结束成功.

但是我不理解为什么实施例SimpleDateFormat使用专门的5"M",而不是4或任何其它数量> = 4.在模式字符串中给出一些"M"的结果的唯一解释是:

月份:如果模式字母的数量为3或更多,则将月份解释为文本; 否则,它被解释为一个数字.

那会有什么不同吗?为什么不能更好地记录?

Bal*_*usC 10

再看一下你引用的javadoc片段:

月份:如果模式字母的数量为3或更多,则将月份解释为文本 ; 否则,它被解释为一个数字.

单击文档中"text"后面的链接.它将您带回到前一点:

文本:对于格式化,如果模式字母的数量为4或更多,则使用完整形式; 否则,如果可用,则使用简短或缩写形式.对于解析,两种形式都被接受,与模式字母的数量无关.

因此,如果它是4个字母或更多,则使用完整形式,否则使用短格式.具有5个字母的示例适合"4个字母或更多"类别.