SimpleDateFormat解析返回null

时间:2013-04-06 20:52:31

标签: 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;
    }
}

我从StackOverflow中的各种帖子中得到了这个解决方案。但是这段代码仍然返回null。谁能告诉我为什么?

3 个答案:

答案 0 :(得分:5)

由于日期格式无效,第一个null返回SimpleDateFormat,因异常阻止而返回null值。

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

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

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

而不是

String tim = time.replace("T", " "); // remove

只需使用time并使用:

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

答案 1 :(得分:2)

它返回null,因为它正在捕获ParseException并且您告诉它返回null。你应该至少打印出栈跟踪,这应该告诉你为什么你得到ParseException。

答案 2 :(得分:0)

它正在抛出解析字符串的ParseException 2013-03-28 15:16:58.000Z。

尝试摆脱Z [就像你用T做的那样]并使用SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US)