我有一个类型为“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/