SimpleDateFormat解析返回null

Ram*_*ain 2 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-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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我从StackOverflow的各种文章中获得了此解决方案。但是此代码仍返回null。谁能告诉我为什么?

Rei*_*eus 5

null由于无效的日期格式而导致第一次SimpleDateFormat返回null,因此从异常块返回了该值。

Z模式用于表示时区模式。要接受文字Z字符,您需要用单引号将字符引起来。

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'Z'", Locale.US);
Run Code Online (Sandbox Code Playgroud)

另外,T如果您不想手动替换,也可以对字符进行相同的操作:

代替

String tim = time.replace("T", " "); // remove
Run Code Online (Sandbox Code Playgroud)

只是使用time和使用:

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
Run Code Online (Sandbox Code Playgroud)