错误的日期转换

时间:2017-12-11 09:13:12

标签: java android date

我的Android应用程序中的日期转换有问题。 我有2017-11-11 11:52之类的日期字符串,其日期等于2017-Nov-11,但在下面的代码段中将其解析为2017-01-11

DateFormat df = new SimpleDateFormat("yyyy-MM-DD HH:mm");
try {
    Date date = df.parse("2017-11-11 11:52");
    Log.v("DATE_TAG","Date Time:"+date.toString());

} catch (ParseException e) {
    e.printStackTrace();
}

上述代码的日志输出为" Wed Jan 11 11:52:00 GMT + 03:30 2017"。

我的日期格式字符串有什么问题吗?

4 个答案:

答案 0 :(得分:3)

您使用的是错误的日期格式。 DD 代表一年中的某一天,而不是一个月中的某一天。您必须使用 dd 。 您可以查看SimpleDateFormat documentation,其中 DD 的范围是1到365.

所以你的代码应该是这样的:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
  Date date = df.parse("2017-11-11 11:52");
  Log.v("DATE_TAG","Date Time:"+date.toString());
} catch (ParseException e) {
  e.printStackTrace();
}

答案 1 :(得分:2)

D是一年中的某一天,例如189.使用d代替

答案 2 :(得分:1)

从您的输出中清楚地注明:Read Document

  

D是一年中的一天(1-365)
  d是每月的日期(1-31)

更改此

DateFormat df = new SimpleDateFormat("yyyy-MM-DD HH:mm");

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");

答案 3 :(得分:0)

D用于(一年中的某一天),因此在您的情况下,您需要使用d(日期为一天)。请使用此格式"yyyy-MM-dd HH:mm"