我正在使用SimpleDateFormat类来获得像这样的当前年份
SimpleDateFormat currentYear = new SimpleDateFormat("YYYY");
Date thisYear = new Date();
String stringThisYear = currentYear .format(thisYear );
它在这里工作得很好(印度),但它在其他人在马来西亚运行时崩溃了。经过大量的调试和搜索后,我发现由于没有提到locale而发生了。所以我改变了我的代码到这个
SimpleDateFormat currentDate = new SimpleDateFormat("YYYY", Locale.ENGLISH);
仍然是崩溃,所以我使用日历实例来获得这样的当前年份
int thisYear=Calendar.getInstance().get(Calendar.YEAR);
但是我想知道simpleDateFormat有什么问题,因为我的大部分代码已经有了simpleDateFormat类。所以我想知道崩溃的原因,如果有人有解决方案,请帮帮我。谢谢你
答案 0 :(得分:5)
这是因为你必须使用“yyyy”而不是“YYYY”
在旧版Android上,使用“YYYY”会让您的应用崩溃。与国家/地区相关无关
“Y”表示指定in the Javadoc
的周年而非年份编辑2
yyyy是用于标识年份的模式字符串 SimpleDateFormat类。
Java 7引入了YYYY作为标识日期周的新日期模式 年。
平均年份正好是52.1775周,这意味着 最终一年可能要考虑52周或53周 不可分割的几周。
格式化日期时无意中使用YYYY会导致严重 Java应用程序中的问题。
如@ OleV.V。所述,格式Y
仅在Android API 24+上受支持。使用API 24以下的任何版本会使应用程序崩溃。
答案 1 :(得分:0)
尝试使用此设备的默认语言环境
SimpleDateFormat currentDate = new SimpleDateFormat("YYYY", Locale.getDefault());
答案 2 :(得分:0)
我正面临同样的问题,使用它工作正常。
SimpleDateFormat formatter = new SimpleDateFormat("YYYY",Locale.US);