Java SimpleDataFormat解析返回null
我有一个类型为“2013-03-28T15:16:58.000Z”的日期值。我想把它转换成“dd-MMM-yyyy”格式。为此,我使用了以下代码:Java SimpleDataFormat解析返回null,java,android,json,date,Java,Android,Json,Date,我有一个类型为“2013-03-28T15:16:58.000Z”的日期值。我想把它转换成“dd-MMM-yyyy”格式。为此,我使用了以下代码: public static String getTime(String time) { try { String tim = time.replace("T", " "); SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-
public static String getTime(String time)
{
try
{
String tim = time.replace("T", " ");
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ", Locale.US);
SimpleDateFormat df2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.US);
return df2.format(df1.parse(tim));
}
catch (ParseException e)
{
return null;
}
}
我从StackOverflow的各种帖子中得到了这个解决方案。但此代码仍然返回null。有人能告诉我原因吗?由于第一个
SimpleDataFormat
返回的null
是无效的日期格式,因此从异常块返回null
值
Z
模式用于表示时区模式。要接受文字Z
字符,需要用单引号将字符括起来
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'Z'", Locale.US);
此外,如果不希望手动替换,也可以对T
字符执行相同的操作:
而不是
String tim = time.replace("T", " "); // remove
只需使用时间
并使用:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
它正在解析字符串2013-03-28 15:16:58.000Z时引发ParseException
尝试摆脱Z[就像您对T所做的那样]并使用
SimpleDataFormat(“yyyy-MM-dd-HH:MM:ss.SSS”,Locale.US)
它返回null,因为它捕获了ParseException,您告诉它返回null。您至少应该打印出stacktrace,这会告诉您为什么会出现ParseException。或者尝试像下面的问题一样正确地处理Z和T,但添加以下内容新的SimpleDataFormat(“yyyy-MM-dd'T'HH:MM:ss.SSS'Z',Locale.US”)代码>