我可以尝试在模式(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'
任何想法,为什么会发生?
答案 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'图案字母,所以这可能是问题所在。
希望这有用。