我的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"。
我的日期格式字符串有什么问题吗?
答案 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"