SimpleDateFormat 给出的日期值错误

Wrong day value given by SimpleDateFormat

我正在开发一个 android 应用程序,当我需要将我的当前日期发送到服务器时,我通过 currentTime = Calendar.getInstance().getTime(); 获得我的实际日期并使用 [= 解析它25=]SimpleDateFormat "yyyy/MM/DD" ,但是我今天得到的值很奇怪:38

这是我正在使用的代码:

 currentTime = Calendar.getInstance().getTime();
 SimpleDateFormat df1 = new SimpleDateFormat("yyyy/MM/DD");
 String formattedDate1 = df1.format(currentTime.getTime());

NB : currentTime 返回的日期值是正确的

PS:这段代码在前几天工作正常!

解析日期的模式匹配区分大小写。生成解析模式时需要非常小心并参考 the documentation.

DD,全部capital/uppercase个字母,指当年的今天。今天,2 月 7 日,是一年中的第 38 天(1 月 31 日 + 2 月 7 日。)

dd,全小写,表示当月当天。这将解析为 7 表示 2 月 7 日。

因此,您应该使用的正确模式是:yyyy/MM/dd

它最近在工作,因为之前是一月份。仅对于一月份,ddDD 将 return 相同的值。

我相信你想要 d 而不是 DD

D returns 一年中的今天(我假设是 1 月的 31 天 + 2 月的 7 天)。

d returns 当前日期。

酱料:https://developer.android.com/reference/java/text/SimpleDateFormat.html