SimpleDateFormat给出错误的日期值

时间:2018-02-07 22:11:51

标签: java android simpledateformat

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

我使用的代码是:

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

enter image description here

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

PS :此代码在前几天正常运行!

2 个答案:

答案 0 :(得分:3)

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

DD,所有大写/大写字母,指的是当年的当天。今天,2月7日是一年中的第38天(1月31日,2月7日)。

dd,所有小写字母,指的是当月的当天。这将在2月7日解析为7。

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

最近工作,因为它是在1月份之前。仅限1月份,ddDD将返回相同的值。

答案 1 :(得分:2)

我相信您希望d不是DD

D返回当年的当天(1月31日,2月7日,我假设)。

d返回当月的当天。

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