2

我想答案是否定的。如果我使用 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 ("");
    }
}

顺利结束。

但是我不明白为什么使用的示例特别是SimpleDateFormat5 'M' 而不是 4 或任何其他数字> = 4。在模式字符串中给出多个“M”的结果的唯一解释是:

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

那有什么区别吗?为什么不能更好地记录?

4

1 回答 1

11

再次查看您引用的 javadoc 文章:

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

单击文档中“文本”后面的链接。它使您回到上一点:

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

因此,如果是 4 个或更多字母,则使用完整形式,否则使用短形式。包含 5 个字母的示例属于“4 个或更多字母”类别。

于 2013-05-06T14:34:05.957 回答