当我将SimpleDateFormat类与“ YYYY”一起使用时,应用程序崩溃

cam*_*ode 3 java android simpledateformat

我正在使用SimpleDateFormat类来获取这样的当前年份

SimpleDateFormat currentYear = new SimpleDateFormat("YYYY");
Date thisYear = new Date();
String stringThisYear  = currentYear .format(thisYear );
Run Code Online (Sandbox Code Playgroud)

它在这里(印度)工作正常,但是在其他人在马来西亚运行时崩溃了。经过大量调试和搜索,我发现由于没有提及语言环境而发生了问题,因此我将代码更改为此

SimpleDateFormat currentDate = new SimpleDateFormat("YYYY", Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)

仍然很崩溃,所以我使用日历实例来获取这样的当前年份

 int thisYear=Calendar.getInstance().get(Calendar.YEAR);
Run Code Online (Sandbox Code Playgroud)

但是我想知道simpleDateFormat是什么问题,因为我的大多数代码已经具有simpleDateFormat类。所以我想知道崩溃的原因,如果有人有解决方案,请帮助我。谢谢

Ese*_*far 6

这是因为您必须使用“ yyyy”而不是“ YYYY”

在旧版本的Android上,使用“ YYYY”会使您的应用崩溃。与国家/地区无关

“ Y”代表星期年份,而不是Javadoc中指定的年份

编辑2

更多信息在这里

yyyy是用于标识SimpleDateFormat类中年份的模式字符串。

Java 7引入了YYYY作为新的日期模式,以标识星期几。

平均一年正好是52.1775周,这意味着考虑到不可分割的周数,一年最终可能有52周或53周。

在格式化日期时意外使用YYYY可能会在Java应用程序中引起严重问题。

如@ OleV.V。所述,该格式Y仅在Android API 24+上受支持。使用低于API 24的任何版本都会导致应用崩溃。