7

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

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

但我得到了这个例外:

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

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

4

3 回答 3

8

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

String fmt = Build.VERSION.SDK_INT <= 8 ? "MMMM yyyy" : "LLLL yyyy";
SimpleDateFormat sdfDate = new SimpleDateFormat(fmt);
于 2013-02-05T13:42:20.320 回答
2

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

SimpleDateFormat 的手册页http://developer.android.com/reference/java/text/SimpleDateFormat.html说“L”在当月有效。它还说“M”是有效的。

我变了 :

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。

于 2012-08-15T21:08:24.183 回答
0

我有同样的问题,但是对于“A”字符,在查看 SimpleDateFormat API 之后,没有“A”模式字母,只有“a”。当我更改为“a”模式字母时,它可以正常工作。我也没有看到您的“L”型字母,所以这可能是问题所在。

看看这里

希望这会有所帮助。

于 2011-05-10T03:01:44.433 回答