java - SimpleDateFormat 解析返回 null

标签 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。谁能告诉我为什么?

最佳答案

由于第一个 SimpleDateFormat 由于日期格式无效而返回 null,因此从异常 block 返回 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);

关于java - SimpleDateFormat 解析返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15855897/

相关文章:

java - 为什么 EnumSet 对不同的大小使用 RegularEnumSet 和 JumboEnumSet。它如何影响性能?

android - 通过应用程序运行 shell 命令..无法正常工作

javascript - v4 : pinch zooming a map when one finger is over a child element 中的 d3.js 缩放传播

android - 如何使用 Android API 将 xml 文件附加到 SMS/MMS 消息

java - JSONObject 和 JSONArray - 需要获取数组中保存的值

java - Java中的线程池

java - maven-site 插件 3.3 java.lang.ClassNotFoundException : org. apache.maven.doxia.siterenderer.DocumentContent

java - 设置默认架构 hibernate

html - 如何在 swift 中用 HTML 解析 Json

javascript - 使用 jQuery 发送表单时获取正确的对象数量