SimpleDateFormat中的'L'字符模式

时间:2011-04-19 12:11:59

标签: java android pattern-matching simpledateformat

我可以尝试在模式(http://developer.android.com/reference/java/text/SimpleDateFormat.html)中使用'L'字符:

SimpleDateFormat sdf2 = new SimpleDateFormat("d LLLL y 'г'. H:mm:ss z", new Locale("ru", "RU"));

但我得到了这个例外:

java.lang.IllegalArgumentException: Unknown pattern character - 'L'

任何想法,为什么会发生?

3 个答案:

答案 0 :(得分:8)

Android版本2.2及更低版本似乎不支持L字符模式。在斯拉夫语言中寻找日期格式的解决方案时,我发现了同样的问题(请参阅我对XtopherSD的回答的评论)。我最终有条件地编码了格式:

String fmt = Build.VERSION.SDK_INT <= 8 ? "MMMM yyyy" : "LLLL yyyy";
SimpleDateFormat sdfDate = new SimpleDateFormat(fmt);

答案 1 :(得分:2)

当然我正在使用和API 16级仿真设备进行开发,其中一切正常。当我尝试在API级别7模拟设备上运行它时,我得到了同样的错误。

SimpleDateFormat的手册页http://developer.android.com/reference/java/text/SimpleDateFormat.html表示&#34; L&#34;有效期为本月。它还说&#34; M&#34;是有效的。

我改变了:

private static SimpleDateFormat sdf_myDate = new SimpleDateFormat("LLLL d yyyy HHmm", Locale.US);

到:

private static SimpleDateFormat sdf_myDate= new SimpleDateFormat("MMMM d yyyy HHmm", Locale.US);

它适用于API 7和16。

答案 2 :(得分:0)

我遇到了同样的问题,但是使用'A'字符后,看看SimpleDateFormat API后,没有'A'模式字母,只有'a'。当我改为'a'模式字母时,它可以正常工作。我也没有看到你的'L'图案字母,所以这可能是问题所在。

Take a look here

希望这有用。